From c91f29d542e0f172488900f502118357258034c8 Mon Sep 17 00:00:00 2001 From: "groombook-ci[bot]" Date: Sat, 28 Mar 2026 21:22:13 +0000 Subject: [PATCH] fix(App.test): reorder auth guards to fix dev mode redirect The App.tsx auth flow had needsSetup check before dev mode redirect, causing needsSetup to remain null in dev mode (since the setup fetch is skipped), which made the component return null instead of redirecting. Fix: check needsSetup only in production mode, after dev mode guards. Dev mode redirect to /login now works regardless of needsSetup state. This fixes the App.test.tsx "Dev login selector" test failure. Co-Authored-By: Paperclip --- apps/web/src/App.tsx | 13 ++++++++----- apps/web/src/portal/CustomerPortal.tsx | 17 +++++++++-------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/apps/web/src/App.tsx b/apps/web/src/App.tsx index 3a91a34..0a5afa1 100644 --- a/apps/web/src/App.tsx +++ b/apps/web/src/App.tsx @@ -236,20 +236,23 @@ export function App() { ); } - // Still loading auth state or setup check - if (authDisabled === null || sessionLoading || needsSetup === null) return null; + // Still loading auth state or setup check (skip setup check in dev mode) + if (authDisabled === null || sessionLoading) return null; - // Dev mode: show login selector + // Dev mode: show login selector (no setup check needed in dev mode) if (authDisabled && location.pathname === "/login") { return ; } - // Dev mode: use dev login selector + // Dev mode: use dev login selector (no setup check needed in dev mode) if (authDisabled && !getDevUser()) { return ; } - // Production mode: if no session, show login page (avoids redirect loops) + // Production: need setup check + if (needsSetup === null) return null; + + // Production mode: if no session, redirect to Authentik sign-in if (!authDisabled && !session) { return ; } diff --git a/apps/web/src/portal/CustomerPortal.tsx b/apps/web/src/portal/CustomerPortal.tsx index 484a26a..7fbc453 100644 --- a/apps/web/src/portal/CustomerPortal.tsx +++ b/apps/web/src/portal/CustomerPortal.tsx @@ -122,21 +122,22 @@ export function CustomerPortal() { const isReadOnly = session?.status === "active"; const renderSection = () => { + const sessionId = session?.id ?? null; switch (activeSection) { case "dashboard": - return ; + return ; case "appointments": - return ; + return ; case "pets": - return ; + return ; case "reports": - return ; + return ; case "billing": - return ; + return ; case "messages": - return ; + return ; case "settings": - return ; + return ; } }; @@ -279,7 +280,7 @@ export function CustomerPortal() {
- Hi, {CUSTOMER.name.split(" ")[0]} + Hi, {clientName.split(" ")[0] || "Guest"}
SM