import { api_base, CookieNames } from "$lib/configuration"; import { logError } from "$lib/logger"; import { error, redirect } from "@sveltejs/kit"; import type { LayoutServerLoad } from "./$types"; export const load: LayoutServerLoad = async ({ routeId, cookies }) => { const isPublicRoute = routeId?.startsWith("(main)/(public)") ?? true; const sessionCookie = cookies.get(CookieNames.session); const sessionIsValid = (await fetch(api_base("_/valid-session"), { headers: { Cookie: CookieNames.session + "=" + sessionCookie, } }).catch((e) => { logError(e); throw error(503, { message: "We are experiencing a service distruption! Have patience while we resolve the issue." }) })).ok; if (sessionIsValid && isPublicRoute) { throw redirect(302, "/home"); } else if (!sessionIsValid && !isPublicRoute) { throw redirect(302, "/sign-in"); } };