import { redirect, type Handle } from '@sveltejs/kit'; import { PUBLIC_BASE_API_URL } from '$env/static/public'; export const handle: Handle = async ({ event, resolve }) => { const { cookies, url, getClientAddress } = event; if (!cookies.get('accessToken') && url.pathname === '/login') { const returnResponse = await resolve(event); return returnResponse; } if (!cookies.get('accessToken') && url.pathname !== '/login') { throw redirect(301, '/login'); } const response = await fetch(`${PUBLIC_BASE_API_URL}/auth/me`, { headers: { Authorization: `Bearer ${cookies.get('accessToken')}`, 'x-forwarded-for': getClientAddress(), 'x-real-ip': getClientAddress() } }); const data: { statusCode: number; message: string } = await response.json(); if (data.statusCode && url.pathname !== '/login') { throw redirect(301, '/login?redirected=true'); } else if (!data.statusCode && (url.pathname === '/' || url.pathname === '/login')) { throw redirect(302, '/app'); } const returnResponse = await resolve(event); return returnResponse; };