This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

core / web / src / lib / auth / guards.ts
945 B 29 lines
1import { goto } from "$app/navigation"; 2import { resolve } from "$app/paths"; 3import { redirect, type RequestEvent } from "@sveltejs/kit"; 4import { CURRENT_DID_KEY, CURRENT_HANDLE_KEY } from "./accounts"; 5import type { Auth } from "../auth.svelte"; 6 7export interface RequireAuthResult { 8 did: string; 9 handle: string; 10} 11 12const loginWithReturn = (returnUrl: string): string => 13 `/login?return_url=${encodeURIComponent(returnUrl)}`; 14 15export const requireAuth = (event: RequestEvent): RequireAuthResult => { 16 const did = event.cookies.get(CURRENT_DID_KEY); 17 if (!did) { 18 redirect(302, loginWithReturn(event.url.pathname + event.url.search)); 19 } 20 return { did, handle: event.cookies.get(CURRENT_HANDLE_KEY) ?? did }; 21}; 22 23export const requireAuthClient = (auth: Auth, url: URL): boolean => { 24 if (auth.currentDid) return true; 25 void goto(resolve(loginWithReturn(url.pathname + url.search) as "/login"), { 26 replaceState: true 27 }); 28 return false; 29};