boredgame/src/hooks.server.ts

48 lines
1.3 KiB
TypeScript
Raw Normal View History

2023-05-21 05:18:04 +00:00
import { redirect, type Handle } from '@sveltejs/kit';
import type { HandleServerError } from '@sveltejs/kit';
2023-05-21 05:18:04 +00:00
import { auth } from '$lib/server/lucia';
import log from '$lib/server/log';
import { dev } from '$app/environment';
export const handleError: HandleServerError = async ({ error, event }) => {
const errorId = crypto.randomUUID();
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
//@ts-ignore
event.locals.error = error?.toString() || undefined;
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
//@ts-ignore
event.locals.errorStackTrace = error?.stack || undefined;
event.locals.errorId = errorId;
if (!dev) {
log(500, event);
}
return {
message: 'An unexpected error occurred.',
errorId
};
};
2023-05-21 05:18:04 +00:00
export const handle: Handle = async ({ event, resolve }) => {
const startTimer = Date.now();
event.locals.startTimer = startTimer;
2023-05-21 05:18:04 +00:00
event.locals.auth = auth.handleRequest(event);
console.log(JSON.stringify(event));
if (event.locals?.auth) {
const { user } = await event.locals.auth.validateUser();
event.locals.user = user;
if (event.route.id?.startsWith('/(protected)')) {
if (!user) throw redirect(302, '/auth/sign-in');
if (!user.verified) throw redirect(302, '/auth/verify/email');
}
}
const response = await resolve(event);
if (!dev) {
log(response.status, event);
}
return response;
2023-05-21 05:18:04 +00:00
};