/ src / hooks.server.ts
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  };