hooks.server.ts
1 import type { Handle } from '@sveltejs/kit'; 2 import { verifyToken } from '$lib/services/user.service'; 3 import { SIMULATE_LOGGED_IN_USER } from "$env/static/private"; 4 5 export const handle: Handle = async ({ event, resolve }) => { 6 ('[Hooks] Handling request for URL:', event.url.pathname); 7 ('[Hooks] Request method:', event.request.method); 8 9 const simulateLoggedInUser = SIMULATE_LOGGED_IN_USER === 'true'; 10 if (simulateLoggedInUser) { 11 ('[Hooks] Simulating logged-in user'); 12 // Simulate a logged-in user 13 event.locals.user = { 14 name: 'admin', 15 role: 'user' 16 }; 17 } else { 18 ('[Hooks] Normal authentication flow'); 19 // Normal authentication flow 20 const token = event.cookies.get('token'); 21 ('[Hooks] Token from cookies:', token); 22 23 if (token) { 24 ('[Hooks] Verifying token'); 25 // Verify the token 26 const user = await verifyToken(token); 27 ('[Hooks] Token verification result:', user); 28 29 if (user) { 30 ('[Hooks] Setting user in locals:', user.username); 31 event.locals.user = { 32 name: user.username, 33 role: 'user', // In a real app, this would come from the user object 34 }; 35 36 // Also set the password in locals if available 37 const password = event.cookies.get('password'); 38 if (password) { 39 event.locals.password = password; 40 } 41 } else { 42 ('[Hooks] Token invalid, setting user to null'); 43 event.locals.user = null; 44 } 45 } else { 46 ('[Hooks] No token found, setting user to null'); 47 event.locals.user = null; 48 } 49 } 50 51 ('[Hooks] Final user state:', event.locals.user); 52 return resolve(event); 53 };