From c0cb2d25a06afc56e3706ac49dab3bcae81a93b2 Mon Sep 17 00:00:00 2001 From: Mikkel Georgsen Date: Sun, 8 Feb 2026 12:55:35 +0100 Subject: [PATCH] Fix auth flow: federated logout, login page move, and healthcheck - Add federated logout endpoint that clears Auth.js session AND ends Zitadel SSO session via OIDC end_session endpoint - Move sign-in page from /auth/signin to /login to avoid Auth.js route conflict causing ERR_TOO_MANY_REDIRECTS - Add callbackUrl to all signIn calls so users land on /dashboard - Store id_token in session for federated logout id_token_hint - Fix Zitadel healthcheck using binary ready command (no curl needed) - Update post_logout_redirect_uri in setup script Co-Authored-By: Claude Opus 4.6 --- apps/dashboard/src/app.d.ts | 2 ++ apps/dashboard/src/auth.ts | 4 ++- apps/dashboard/src/routes/+page.svelte | 4 +-- .../api/auth/federated-logout/+server.ts | 26 +++++++++++++++++++ .../src/routes/dashboard/+layout.server.ts | 2 +- .../src/routes/dashboard/+layout.svelte | 4 +-- .../src/routes/dashboard/account/+page.svelte | 3 +-- .../src/routes/login/+page.server.ts | 9 +++++++ .../{auth/signin => login}/+page.svelte | 8 +++--- docker/docker-compose.dev.yml | 3 ++- docker/setup-zitadel.sh | 2 +- docker/zitadel-healthcheck.yaml | 2 ++ 12 files changed, 54 insertions(+), 15 deletions(-) create mode 100644 apps/dashboard/src/routes/api/auth/federated-logout/+server.ts create mode 100644 apps/dashboard/src/routes/login/+page.server.ts rename apps/dashboard/src/routes/{auth/signin => login}/+page.svelte (93%) create mode 100644 docker/zitadel-healthcheck.yaml diff --git a/apps/dashboard/src/app.d.ts b/apps/dashboard/src/app.d.ts index 8334603..fb4ea81 100644 --- a/apps/dashboard/src/app.d.ts +++ b/apps/dashboard/src/app.d.ts @@ -3,6 +3,7 @@ declare module '@auth/sveltekit' { interface Session { accessToken?: string; + idToken?: string; } } @@ -10,6 +11,7 @@ declare module '@auth/core/jwt' { interface JWT { accessToken?: string; refreshToken?: string; + idToken?: string; expiresAt?: number; } } diff --git a/apps/dashboard/src/auth.ts b/apps/dashboard/src/auth.ts index 9cd616d..cf9f4cb 100644 --- a/apps/dashboard/src/auth.ts +++ b/apps/dashboard/src/auth.ts @@ -29,17 +29,19 @@ export const { handle, signIn, signOut } = SvelteKitAuth({ if (account) { token.accessToken = account.access_token; token.refreshToken = account.refresh_token; + token.idToken = account.id_token; token.expiresAt = account.expires_at; } return token; }, async session({ session, token }) { session.accessToken = token.accessToken as string; + session.idToken = token.idToken as string; return session; } }, pages: { - signIn: '/auth/signin' + signIn: '/login' }, trustHost: true }); diff --git a/apps/dashboard/src/routes/+page.svelte b/apps/dashboard/src/routes/+page.svelte index 5a4262b..9cf3684 100644 --- a/apps/dashboard/src/routes/+page.svelte +++ b/apps/dashboard/src/routes/+page.svelte @@ -23,7 +23,7 @@ {:else}