2023-06-16 06:28:49 +00:00
|
|
|
import { sequence } from '@sveltejs/kit/hooks';
|
|
|
|
|
import { redirect, type HandleServerError, type Handle } from '@sveltejs/kit';
|
|
|
|
|
import { dev } from '$app/environment';
|
2023-05-21 05:18:04 +00:00
|
|
|
import { auth } from '$lib/server/lucia';
|
2023-05-29 06:34:39 +00:00
|
|
|
import log from '$lib/server/log';
|
2023-06-16 06:28:49 +00:00
|
|
|
import prisma from '$lib/config/prisma';
|
2023-05-29 06:34:39 +00:00
|
|
|
|
|
|
|
|
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
|
|
|
|
2023-06-16 06:28:49 +00:00
|
|
|
// export const prismaClient: Handle = async function ({ event, resolve }) {
|
|
|
|
|
// event.locals.prisma = prisma;
|
|
|
|
|
// const response = await resolve(event);
|
|
|
|
|
// return response;
|
|
|
|
|
// };
|
|
|
|
|
|
|
|
|
|
export const authentication: Handle = async function ({ event, resolve }) {
|
2023-05-29 06:34:39 +00:00
|
|
|
const startTimer = Date.now();
|
|
|
|
|
event.locals.startTimer = startTimer;
|
|
|
|
|
|
2023-05-21 05:18:04 +00:00
|
|
|
event.locals.auth = auth.handleRequest(event);
|
|
|
|
|
if (event.locals?.auth) {
|
|
|
|
|
const { user } = await event.locals.auth.validateUser();
|
|
|
|
|
event.locals.user = user;
|
2023-06-16 06:28:49 +00:00
|
|
|
// if (event.route.id?.startsWith('/(protected)')) {
|
|
|
|
|
// if (!user) throw redirect(302, '/auth/sign-in');
|
|
|
|
|
// if (!user.verified) throw redirect(302, '/auth/verify/email');
|
|
|
|
|
// }
|
2023-05-21 05:18:04 +00:00
|
|
|
}
|
|
|
|
|
|
2023-05-29 06:34:39 +00:00
|
|
|
const response = await resolve(event);
|
|
|
|
|
return response;
|
2023-05-21 05:18:04 +00:00
|
|
|
};
|
2023-06-16 06:28:49 +00:00
|
|
|
|
|
|
|
|
export const handle = sequence(authentication);
|