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/routes/login/+page.server.ts | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/routes/login/+page.server.ts (limited to 'src/routes/login/+page.server.ts') diff --git a/src/routes/login/+page.server.ts b/src/routes/login/+page.server.ts new file mode 100644 index 0000000..88c5f2d --- /dev/null +++ b/src/routes/login/+page.server.ts @@ -0,0 +1,30 @@ +import { fail, redirect } from '@sveltejs/kit'; +import { setSession, verifyPassword } from '$lib/server/auth'; +import type { Actions, PageServerLoad } from './$types'; + +function safeNext(value: string | null): string { + return value?.startsWith('/') && !value.startsWith('//') ? value : '/'; +} + +export const load: PageServerLoad = ({ url }) => ({ + next: safeNext(url.searchParams.get('next')), +}); + +export const actions: Actions = { + default: async ({ request, cookies, url }) => { + const data = await request.formData(); + const password = data.get('password')?.toString() ?? ''; + const next = safeNext( + data.get('next')?.toString() ?? url.searchParams.get('next'), + ); + + if (!verifyPassword(password)) { + console.warn('[auth] failed login attempt'); + return fail(401, { error: 'Mot de passe incorrect', next }); + } + + console.info('[auth] login succeeded'); + setSession(cookies, url.protocol === 'https:'); + throw redirect(303, next); + }, +}; -- cgit v1.3