47 lines
971 B
TypeScript
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;
|
|
}
|