aboutsummaryrefslogtreecommitdiffstats
path: root/apps/kit
diff options
context:
space:
mode:
Diffstat (limited to 'apps/kit')
-rw-r--r--apps/kit/src/lib/configuration.ts3
-rw-r--r--apps/kit/src/routes/(main)/(public)/+layout.svelte1
-rw-r--r--apps/kit/src/routes/(main)/+layout.server.ts32
-rw-r--r--apps/kit/src/routes/(main)/+layout.svelte29
-rw-r--r--apps/kit/src/routes/(main)/+page.svelte1
5 files changed, 24 insertions, 42 deletions
diff --git a/apps/kit/src/lib/configuration.ts b/apps/kit/src/lib/configuration.ts
index d6f6b4f..609a00f 100644
--- a/apps/kit/src/lib/configuration.ts
+++ b/apps/kit/src/lib/configuration.ts
@@ -24,7 +24,8 @@ export function is_debug(): boolean {
export const CookieNames = {
theme: "go_theme",
- locale: "go_locale"
+ locale: "go_locale",
+ session: "go_session"
};
export const QueryKeys = {
diff --git a/apps/kit/src/routes/(main)/(public)/+layout.svelte b/apps/kit/src/routes/(main)/(public)/+layout.svelte
deleted file mode 100644
index 49aeb95..0000000
--- a/apps/kit/src/routes/(main)/(public)/+layout.svelte
+++ /dev/null
@@ -1 +0,0 @@
-<slot></slot> \ No newline at end of file
diff --git a/apps/kit/src/routes/(main)/+layout.server.ts b/apps/kit/src/routes/(main)/+layout.server.ts
index 01aae89..32b0583 100644
--- a/apps/kit/src/routes/(main)/+layout.server.ts
+++ b/apps/kit/src/routes/(main)/+layout.server.ts
@@ -1,13 +1,19 @@
-// import {is_active} from "$lib/session";
-// import {redirect} from "@sveltejs/kit";
-// import type {LayoutServerLoad} from "./$types";
-//
-// export const load: LayoutServerLoad = async ({routeId}) => {
-// const sessionIsValid = await is_active();
-// const isPublicRoute = routeId?.startsWith("(public)");
-// if (sessionIsValid && isPublicRoute) {
-// throw redirect(302, "/home");
-// } else if (!sessionIsValid && !isPublicRoute) {
-// throw redirect(302, "/login");
-// }
-// }; \ No newline at end of file
+import { api_base, CookieNames } from "$lib/configuration";
+import { 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,
+ }
+ })).ok
+
+ if (sessionIsValid && isPublicRoute) {
+ throw redirect(302, "/home");
+ } else if (!sessionIsValid && !isPublicRoute) {
+ throw redirect(302, "/sign-in");
+ }
+}; \ No newline at end of file
diff --git a/apps/kit/src/routes/(main)/+layout.svelte b/apps/kit/src/routes/(main)/+layout.svelte
index ec50c4b..3107861 100644
--- a/apps/kit/src/routes/(main)/+layout.svelte
+++ b/apps/kit/src/routes/(main)/+layout.svelte
@@ -1,38 +1,15 @@
<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";
import { setLocale } from "$lib/i18n/i18n-svelte";
import { onMount } from "svelte";
import type { LayoutData } from "./$types";
import LocaleSwitcher from "$lib/components/locale-switcher.svelte";
export let data: LayoutData;
- onMount(() => setLocale(data.locale));
- async function redirect_if_necessary(ticket: Navigation) {
- const sessionIsValid = await is_active();
- // TODO: ticket.to can be empty while navigating, so coalesce could probably cause non-public routes to cause a redir to /login...
- const isPublicRoute = ticket.to?.routeId?.startsWith("(main)/(public)");
-
- console.log("redir: ", {
- isPublicRoute,
- sessionIsValid,
- });
-
- if (sessionIsValid && isPublicRoute) {
- await goto("/home");
- } else if (!sessionIsValid && !isPublicRoute) {
- await goto("/sign-in");
- }
- }
-
- // 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);
+ onMount(async () => {
+ setLocale(data.locale);
+ });
</script>
<LocaleSwitcher />
diff --git a/apps/kit/src/routes/(main)/+page.svelte b/apps/kit/src/routes/(main)/+page.svelte
index 85a4d2d..e507a19 100644
--- a/apps/kit/src/routes/(main)/+page.svelte
+++ b/apps/kit/src/routes/(main)/+page.svelte
@@ -1,2 +1 @@
-
<p class="text-bold p-1">Hold on...</p>