mirror of
https://github.com/bretzel-app/crumbs.git
synced 2026-10-13 04:06:57 +02:00
refactor(hooks): populate event.locals.user from session
validateSession now returns user data. Middleware sets event.locals.user on every authenticated request. Add /api/auth/oauth to public paths. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
committed by
Fred Cabassut
co-authored by
Claude Opus 4.6
parent
823fc27b73
commit
59b5e92d91
+19
-3
@@ -2,11 +2,20 @@ import type { Handle } from '@sveltejs/kit';
|
||||
import { redirect } from '@sveltejs/kit';
|
||||
import { validateSession, isSetupComplete } from '$lib/server/auth.js';
|
||||
|
||||
const PUBLIC_PATHS = ['/login', '/setup', '/api/auth/login', '/api/auth/setup'];
|
||||
const PUBLIC_PATHS = [
|
||||
'/login',
|
||||
'/setup',
|
||||
'/api/auth/login',
|
||||
'/api/auth/setup',
|
||||
'/api/auth/oauth'
|
||||
];
|
||||
|
||||
export const handle: Handle = async ({ event, resolve }) => {
|
||||
const { pathname } = event.url;
|
||||
|
||||
// Initialize locals
|
||||
event.locals.user = null;
|
||||
|
||||
// Allow public paths
|
||||
if (PUBLIC_PATHS.some((p) => pathname.startsWith(p))) {
|
||||
return resolve(event);
|
||||
@@ -21,9 +30,16 @@ export const handle: Handle = async ({ event, resolve }) => {
|
||||
return resolve(event);
|
||||
}
|
||||
|
||||
// Validate session
|
||||
// Validate session and populate user
|
||||
const sessionToken = event.cookies.get('session');
|
||||
if (!sessionToken || !(await validateSession(sessionToken))) {
|
||||
if (sessionToken) {
|
||||
const result = await validateSession(sessionToken);
|
||||
if (result.valid && result.user) {
|
||||
event.locals.user = result.user;
|
||||
}
|
||||
}
|
||||
|
||||
if (!event.locals.user) {
|
||||
if (pathname.startsWith('/api/')) {
|
||||
return new Response(JSON.stringify({ error: 'Unauthorized' }), {
|
||||
status: 401,
|
||||
|
||||
Reference in New Issue
Block a user