From a9072370ca1eb9a5cce928b1d487db0f307edea6 Mon Sep 17 00:00:00 2001
From: ivarlovlie <git@ivarlovlie.no>
Date: Tue, 20 Sep 2022 15:24:27 +0800
Subject: feat: Move old apps into it's own directory

---
 apps/kit/src/routes/+layout.svelte | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)
 create mode 100644 apps/kit/src/routes/+layout.svelte

(limited to 'apps/kit/src/routes/+layout.svelte')

diff --git a/apps/kit/src/routes/+layout.svelte b/apps/kit/src/routes/+layout.svelte
new file mode 100644
index 0000000..ee76da9
--- /dev/null
+++ b/apps/kit/src/routes/+layout.svelte
@@ -0,0 +1,23 @@
+<script lang="ts">
+    import "../app.pcss";
+    import {afterNavigate, beforeNavigate, goto} from "$app/navigation";
+    import {is_active} from "$lib/session";
+    import type {Navigation} from "@sveltejs/kit";
+
+    async function redirect_if_necessary(ticket: Navigation) {
+        const sessionIsValid = await is_active();
+        const isPublicRoute = ticket.to?.routeId?.startsWith("(public)");
+        if (sessionIsValid && isPublicRoute) {
+            await goto("/home");
+        } else if (!sessionIsValid && !isPublicRoute) {
+            await goto("/login");
+        }
+    }
+
+    // This should probably be removed in favor of the logic in layout.server.ts.
+    // That requires a more sophisticated server side implementation of session handling,
+    // and i don't want that tbh, i want to stay as much in the browser as possible.
+    afterNavigate(redirect_if_necessary);
+    beforeNavigate(redirect_if_necessary);
+</script>
+<slot></slot>
\ No newline at end of file
-- 
cgit v1.3

