From 007384be67559e1848ee0a8a1726c6b0fa39a221 Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Thu, 13 Aug 2026 09:38:16 +0200 Subject: feat(auth): add persistent family login --- src/hooks.server.ts | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/hooks.server.ts (limited to 'src/hooks.server.ts') diff --git a/src/hooks.server.ts b/src/hooks.server.ts new file mode 100644 index 0000000..f1f5b52 --- /dev/null +++ b/src/hooks.server.ts @@ -0,0 +1,30 @@ +import { redirect } from '@sveltejs/kit'; +import type { Handle } from '@sveltejs/kit'; +import { renewSession } from '$lib/server/auth'; + +const PUBLIC_ASSETS = new Set([ + '/favicon.png', + '/manifest.webmanifest', + '/pwa-192x192.png', + '/pwa-512x512.png', + '/registerSW.js', + '/sw.js', +]); + +function isPublicPath(pathname: string): boolean { + return ( + pathname === '/login' || + pathname.startsWith('/_app/') || + PUBLIC_ASSETS.has(pathname) + ); +} + +export const handle: Handle = async ({ event, resolve }) => { + if (isPublicPath(event.url.pathname)) return resolve(event); + + const secure = event.url.protocol === 'https:'; + if (renewSession(event.cookies, secure)) return resolve(event); + + const next = `${event.url.pathname}${event.url.search}`; + throw redirect(303, `/login?next=${encodeURIComponent(next)}`); +}; -- cgit v1.3