diff --git a/apps/web/src/hooks/use-auth.ts b/apps/web/src/hooks/use-auth.ts index bd642192..9fb8a8c1 100644 --- a/apps/web/src/hooks/use-auth.ts +++ b/apps/web/src/hooks/use-auth.ts @@ -14,42 +14,42 @@ export function useAuth(): AuthState { }); useEffect(() => { - checkAuth(); - }, [checkAuth]); + async function checkAuth() { + try { + // Check if auth is enabled + const configRes = await fetch("/api/v1/config/auth"); + const config = await configRes.json(); - async function checkAuth() { - try { - // Check if auth is enabled - const configRes = await fetch("/api/v1/config/auth"); - const config = await configRes.json(); + if (!config.authEnabled) { + setState({ loading: false, authEnabled: false, isAuthenticated: true }); + return; + } - if (!config.authEnabled) { + // Auth is enabled — check if we have a valid session + const token = localStorage.getItem("stirling-token"); + if (!token) { + setState({ loading: false, authEnabled: true, isAuthenticated: false }); + return; + } + + const sessionRes = await fetch("/api/auth/session", { + headers: { Authorization: `Bearer ${token}` }, + }); + + if (sessionRes.ok) { + setState({ loading: false, authEnabled: true, isAuthenticated: true }); + } else { + localStorage.removeItem("stirling-token"); + setState({ loading: false, authEnabled: true, isAuthenticated: false }); + } + } catch { + // Can't reach API — assume no auth needed (dev mode) setState({ loading: false, authEnabled: false, isAuthenticated: true }); - return; } - - // Auth is enabled — check if we have a valid session - const token = localStorage.getItem("stirling-token"); - if (!token) { - setState({ loading: false, authEnabled: true, isAuthenticated: false }); - return; - } - - const sessionRes = await fetch("/api/auth/session", { - headers: { Authorization: `Bearer ${token}` }, - }); - - if (sessionRes.ok) { - setState({ loading: false, authEnabled: true, isAuthenticated: true }); - } else { - localStorage.removeItem("stirling-token"); - setState({ loading: false, authEnabled: true, isAuthenticated: false }); - } - } catch { - // Can't reach API — assume no auth needed (dev mode) - setState({ loading: false, authEnabled: false, isAuthenticated: true }); } - } + + checkAuth(); + }, []); return state; }