import { redirect } from "@sveltejs/kit"; import PocketBase from "pocketbase"; const POCKETBASE_URL = "https://pocketbase.ccllc.pro"; const LOGIN_PATH = "/login"; const LOGOUT_PATH = "/logout"; function isPublicRoute(pathname) { return pathname === LOGIN_PATH || pathname.startsWith(LOGIN_PATH + "/") || pathname === LOGOUT_PATH; } const handle = async ({ event, resolve }) => { event.locals.pb = new PocketBase(POCKETBASE_URL); event.locals.pb.authStore.loadFromCookie(event.request.headers.get("cookie") || ""); try { if (event.locals.pb.authStore.isValid) { await event.locals.pb.collection("users").authRefresh(); } } catch { event.locals.pb.authStore.clear(); } event.locals.user = event.locals.pb.authStore.record ?? null; if (!event.locals.user && !isPublicRoute(event.url.pathname)) { const redirectTo = event.url.pathname + event.url.search; const loginUrl = redirectTo && redirectTo !== "/" ? `${LOGIN_PATH}?redirectTo=${encodeURIComponent(redirectTo)}` : LOGIN_PATH; throw redirect(303, loginUrl); } const response = await resolve(event); response.headers.append( "set-cookie", event.locals.pb.authStore.exportToCookie({ httpOnly: false, sameSite: "Lax" }) ); return response; }; export { handle };