Files
streba/src/hooks.server.ts
T

24 lines
700 B
TypeScript

import { error, redirect, type Handle } from '@sveltejs/kit';
import { validateSession } from '$lib/server/auth';
const AUTH_PATHS = new Set(['/login', '/signup']);
function isPublic(path: string): boolean {
return path === '/' || AUTH_PATHS.has(path) || /^\/activities\/\d+$/.test(path);
}
export const handle: Handle = async ({ event, resolve }) => {
event.locals.user = validateSession(event.cookies.get('session'));
const path = event.url.pathname;
if (!event.locals.user && !isPublic(path)) {
if (path.startsWith('/api/')) error(401, 'Not signed in');
redirect(303, '/login');
}
if (event.locals.user && AUTH_PATHS.has(path)) {
redirect(303, '/');
}
return resolve(event);
};