aboutsummaryrefslogtreecommitdiffstats
path: root/code/app/src/routes/(main)/+layout.server.ts
diff options
context:
space:
mode:
authorivarlovlie <git@ivarlovlie.no>2022-10-05 14:45:21 +0200
committerivarlovlie <git@ivarlovlie.no>2022-10-05 14:45:21 +0200
commitb7e39b59fd0fc7b5610ebff29035bf622079e0d8 (patch)
tree64be84ebbdac9f7ceced983390c53b10d575af5c /code/app/src/routes/(main)/+layout.server.ts
parent2001c035fbb417ab0a3d42cfb04d17420bde4086 (diff)
downloadgreatoffice-b7e39b59fd0fc7b5610ebff29035bf622079e0d8.tar.xz
greatoffice-b7e39b59fd0fc7b5610ebff29035bf622079e0d8.zip
refactor: Change file structure
Diffstat (limited to 'code/app/src/routes/(main)/+layout.server.ts')
-rw-r--r--code/app/src/routes/(main)/+layout.server.ts34
1 files changed, 34 insertions, 0 deletions
diff --git a/code/app/src/routes/(main)/+layout.server.ts b/code/app/src/routes/(main)/+layout.server.ts
new file mode 100644
index 0000000..d2eb2eb
--- /dev/null
+++ b/code/app/src/routes/(main)/+layout.server.ts
@@ -0,0 +1,34 @@
+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, locals }) => {
+ const isPublicRoute = (routeId?.startsWith("(main)/(public)") || routeId === "(main)") ?? true;
+
+ let sessionIsValid = (await fetch(api_base("_/valid-session"), {
+ headers: {
+ Cookie: CookieNames.session + "=" + cookies.get(CookieNames.session)
+ }
+ }).catch((e) => {
+ logError(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 (!sessionIsValid && !isPublicRoute) {
+ throw redirect(302, "/sign-in");
+ }
+ return {
+ locale: locals.locale
+ }
+}; \ No newline at end of file