import { goto } from '$app/navigation'; import { resolve } from '$app/paths'; import { redirect, type RequestEvent } from '@sveltejs/kit'; import { CURRENT_DID_KEY, CURRENT_HANDLE_KEY } from './accounts'; import type { Auth } from '../auth.svelte'; export interface RequireAuthResult { did: string; handle: string; } const loginWithReturn = (returnUrl: string): string => `/login?return_url=${encodeURIComponent(returnUrl)}`; export const requireAuth = (event: RequestEvent): RequireAuthResult => { const did = event.cookies.get(CURRENT_DID_KEY); if (!did) { redirect(302, loginWithReturn(event.url.pathname + event.url.search)); } return { did, handle: event.cookies.get(CURRENT_HANDLE_KEY) ?? did }; }; export const requireAuthClient = (auth: Auth, url: URL): boolean => { if (auth.currentDid) return true; void goto(resolve(loginWithReturn(url.pathname + url.search) as '/login'), { replaceState: true }); return false; };