From e5f37b003d93a17c2a9958697269b2d3228d8830 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Wed, 4 Mar 2026 23:06:35 -0800 Subject: tuning --- src/hooks.server.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/hooks.server.ts') diff --git a/src/hooks.server.ts b/src/hooks.server.ts index fcb1d461..7acb2a43 100644 --- a/src/hooks.server.ts +++ b/src/hooks.server.ts @@ -1,5 +1,6 @@ import { ipStore } from "$lib/server/ip"; import { setIpGetter } from "$lib/utils"; +import { redirect } from "@sveltejs/kit"; import type { Handle } from "@sveltejs/kit"; setIpGetter(() => ipStore.getStore()); @@ -17,6 +18,26 @@ export const handle: Handle = async ({ event, resolve }) => { } } + // Sync aid cookie from URL params + try { + const aid = event.url.searchParams.get("aid"); + if (aid) event.cookies.set("aid", aid, { path: "/", maxAge: 86400, httpOnly: false }); + } catch {} + + + // Auth check for (app) routes + const isAppRoute = event.route.id?.startsWith("/(app)"); + const token = event.cookies.get("token"); + const { pathname } = event.url; + const isSweep = pathname.match(/^\/fund\/[^/]+\/sweep/); + const isLogout = pathname === "/logout"; + if (isLogout) { + // Clear token before layout load to prevent infinite redirect loops + event.cookies.set("token", "", { expires: new Date(0), path: "/" }); + } else if (isAppRoute && !token && !isSweep) { + redirect(307, "/login"); + } + return ipStore.run(ip, async () => { const response = await resolve(event); const { pathname } = event.url; -- cgit v1.2.3