import type { ExternalFetch, GetSession, Handle } from '@sveltejs/kit'; import * as cookie from 'cookie'; import { serverEndpoint } from '$lib/constants'; import { session } from '$app/stores'; export const handle: Handle = async ({ event, resolve, }) => { const cookies = cookie.parse(event.request.headers.get('cookie') || ''); if (!cookies.session) { return await resolve(event) } try { const { email, isAdmin, firstName, lastName, id, accessToken } = JSON.parse(cookies.session); const res = await fetch(`${serverEndpoint}/auth/validateToken`, { method: 'POST', headers: { 'Authorization': `Bearer ${accessToken}` } }) if (res.status === 201) { event.locals.user = { id, accessToken, firstName, lastName, isAdmin, email }; } const response = await resolve(event); return response; } catch (error) { console.log('Error parsing session', error); return await resolve(event); } }; export const getSession: GetSession = async ({ locals }) => { if (!locals.user) return {} return { user: { id: locals.user.id, accessToken: locals.user.accessToken, firstName: locals.user.firstName, lastName: locals.user.lastName, isAdmin: locals.user.isAdmin, email: locals.user.email } } }