dipper/src/lib/api/auth.ts

47 lines
971 B
TypeScript

import type { Cookies } from '@sveltejs/kit';
import { callJSON, callText } from './request';
interface LoginParameters {
username: string;
password: string;
}
interface LoginResponse {
expires_at: string;
session_id: string;
}
interface OkResponse {
ok: true;
}
export const login = (cookies: Cookies, username: string, password: string) =>
callJSON<LoginResponse, LoginParameters>(
'POST',
'auth/login',
{
username,
password
},
cookies
);
export const logout = (cookies: Cookies) =>
callJSON<OkResponse>('POST', 'auth/logout', undefined, cookies);
export const getLoggedInUser = (cookies: Cookies) => callText('GET', 'auth/me', undefined, cookies);
export async function isLoggedIn(cookies: Cookies) {
const session = cookies.get('session');
if (session) {
try {
// Check that login is valid
await getLoggedInUser(cookies);
return true;
} catch (e) {
// do nothing, we'll just return false below
}
}
return false;
}