import { FreshContext } from "$fresh/server.ts"; import { deleteCookie, getCookies, setCookie } from "$std/http/cookie.ts"; import { auth, Token } from "../auth/auth.ts"; type State = { user_id: string | null; }; export async function handler( req: Request, ctx: FreshContext, ) { const cookies = getCookies(req.headers); const token = get_session_token(cookies); ctx.state.user_id = token?.user_id ?? null; const resp = await ctx.next(); set_session_token(resp.headers, token); return resp; } function get_session_token(cookies: Record) { const stored = cookies["auth_token"]; if (stored === undefined) return null; const token = auth.tokens.get(stored); if (token === null) return null; return token; } function set_session_token(headers: Headers, token: Token | null) { if (token === null) { deleteCookie(headers, "auth_token"); return; } setCookie(headers, { name: "auth_token", value: token.raw, }); }