From 35f15ebc061076709293bbe4e3e2ace78ac79445 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Tue, 3 Mar 2026 13:37:47 -0800 Subject: static landing page with single Start Now button Prerender the landing page, replace conditional auth header buttons with a single "Start Now" that checks the username cookie client-side. Set username cookie httpOnly: false in all login/register flows. Co-Authored-By: Claude Opus 4.6 --- src/components/LandingHeader.svelte | 24 ++++++++--------------- src/lib/utils.ts | 4 ++-- src/routes/(app)/admin/+layout.svelte | 3 +-- src/routes/(static)/+layout.svelte | 3 +-- src/routes/(static)/login/+page.server.ts | 6 +++--- src/routes/(static)/register/auth/+page.server.ts | 2 +- src/routes/+page.svelte | 4 ++-- src/routes/+page.ts | 1 + 8 files changed, 19 insertions(+), 28 deletions(-) create mode 100644 src/routes/+page.ts (limited to 'src') diff --git a/src/components/LandingHeader.svelte b/src/components/LandingHeader.svelte index a875e80a..febfc7fd 100644 --- a/src/components/LandingHeader.svelte +++ b/src/components/LandingHeader.svelte @@ -9,9 +9,13 @@ howItWorks = undefined, faq = undefined, about = undefined, - user = undefined, }: any = $props(); + function startNow() { + const match = document.cookie.match(/(?:^|;\s*)username=([^;]*)/); + goto(match ? `/${decodeURIComponent(match[1])}` : "/login"); + } + let header = $state(); @@ -32,21 +36,9 @@ {/if} - {#if user} - - - {:else} - - - {/if} + diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 6815a5b2..cb1e5ec7 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -200,7 +200,7 @@ export const login = async ( const opts = { path: "/", expires }; if (u.language) cookies.set("lang", u.language, opts); - cookies.set("username", user.username, opts); + cookies.set("username", user.username, { ...opts, httpOnly: false }); cookies.set("token", token, opts); if (u.nsec) { try { @@ -544,7 +544,7 @@ export const register = async ( const expires = new Date(); expires.setSeconds(expires.getSeconds() + maxAge); const opts = { path: "/", expires }; - cookies.set("username", user.username, opts); + cookies.set("username", user.username, { ...opts, httpOnly: false }); cookies.set("token", token, opts); error = null; } diff --git a/src/routes/(app)/admin/+layout.svelte b/src/routes/(app)/admin/+layout.svelte index 28e8b7d0..3e1f6585 100644 --- a/src/routes/(app)/admin/+layout.svelte +++ b/src/routes/(app)/admin/+layout.svelte @@ -1,10 +1,9 @@ - +
{@render children?.()}
diff --git a/src/routes/(static)/+layout.svelte b/src/routes/(static)/+layout.svelte index b204cd0e..f44bfcda 100644 --- a/src/routes/(static)/+layout.svelte +++ b/src/routes/(static)/+layout.svelte @@ -7,7 +7,6 @@ import { page } from "$app/stores"; let { data, children } = $props(); - let user = $derived(data.user); let theme = $state(); $effect(() => { theme = $themeStore; @@ -17,7 +16,7 @@ - +
{@render children?.()} diff --git a/src/routes/(static)/login/+page.server.ts b/src/routes/(static)/login/+page.server.ts index 0c493422..480116b5 100644 --- a/src/routes/(static)/login/+page.server.ts +++ b/src/routes/(static)/login/+page.server.ts @@ -88,7 +88,7 @@ export const actions = { const opts = { path: "/", expires }; if (language) cookies.set("lang", language, opts); - cookies.set("username", uname, opts); + cookies.set("username", uname, { ...opts, httpOnly: false }); cookies.set("token", token, opts); return { @@ -137,7 +137,7 @@ export const actions = { const opts = { path: "/", expires }; if (language) cookies.set("lang", language, opts); - cookies.set("username", username, opts); + cookies.set("username", username, { ...opts, httpOnly: false }); cookies.set("token", token, opts); return { @@ -181,7 +181,7 @@ export const actions = { const opts = { path: "/", expires }; if (language) cookies.set("lang", language, opts); - cookies.set("username", username, opts); + cookies.set("username", username, { ...opts, httpOnly: false }); cookies.set("token", token, opts); return { diff --git a/src/routes/(static)/register/auth/+page.server.ts b/src/routes/(static)/register/auth/+page.server.ts index 06735396..29e9a3f8 100644 --- a/src/routes/(static)/register/auth/+page.server.ts +++ b/src/routes/(static)/register/auth/+page.server.ts @@ -88,7 +88,7 @@ export const actions = { expires.setSeconds(expires.getSeconds() + maxAge); const opts = { path: "/", expires }; - cookies.set("username", username, opts); + cookies.set("username", username, { ...opts, httpOnly: false }); cookies.set("token", token, opts); if (sk) { diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 5fa7da3b..13cbd011 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -11,7 +11,7 @@ import { t } from "$lib/translations"; let { data } = $props(); - let { faqs, locations, user } = $derived(data as any); + let { faqs, locations } = $derived(data as any); let howItWorks = $state(); let faq = $state(); @@ -28,7 +28,7 @@ - +
diff --git a/src/routes/+page.ts b/src/routes/+page.ts new file mode 100644 index 00000000..189f71e2 --- /dev/null +++ b/src/routes/+page.ts @@ -0,0 +1 @@ +export const prerender = true; -- cgit v1.2.3