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