peer-at-code-web/src/hooks.server.ts
2024-04-11 20:56:26 +02:00

60 lines
1.2 KiB
TypeScript

import type { Handle, HandleFetch, HandleServerError } from '@sveltejs/kit';
import { API_URL } from '$env/static/private';
import type { User } from '$lib/types';
export const handle: Handle = async ({ event, resolve }) => {
const session = event.cookies.get('session');
if (!session) {
event.locals.user = undefined;
return resolve(event);
}
const res = await fetch(`${API_URL}/player/`, {
headers: {
Authorization: `Bearer ${session}`
}
});
if (!res.ok) {
event.locals.user = undefined;
event.cookies.delete('session', { path: '/' });
return resolve(event);
}
const user: User = await res.json();
event.locals.user = user;
return resolve(event);
};
export const handleFetch: HandleFetch = async ({ request, fetch, event: { cookies } }) => {
const session = cookies.get('session');
if (!session) {
return fetch(request);
}
request = new Request(request, {
headers: {
Authorization: `Bearer ${session}`
},
});
return fetch(request);
}
export const handleError: HandleServerError = async ({ error, status }) => {
const errorId = crypto.randomUUID();
console.error(`Error ID: ${errorId} - Status: ${status} - ${error}`);
return {
message: 'Whoops!',
errorId,
};
};