import { useEffect, useState } from "react"; import { useAuth } from "react-oidc-context"; import { Navigate, Outlet } from "react-router-dom"; import { userManager } from "../../lib/auth"; import { findPersistedOidcUser, isValidOidcSessionUser, } from "../../lib/oidcStorage"; export default function AuthGuard() { const auth = useAuth(); const hasActiveAuthUser = auth.isAuthenticated && isValidOidcSessionUser(auth.user); const [hasStoredUser, setHasStoredUser] = useState(() => findPersistedOidcUser() ? true : null, ); const isTestMode = (window as Window & typeof globalThis & { _IS_TEST_MODE?: boolean }) ._IS_TEST_MODE === true; useEffect(() => { let cancelled = false; if (isTestMode) { setHasStoredUser(true); return () => { cancelled = true; }; } const persistedUser = findPersistedOidcUser(); if (persistedUser) { setHasStoredUser(true); return () => { cancelled = true; }; } void userManager .getUser() .then((user) => { if (!cancelled) { setHasStoredUser(isValidOidcSessionUser(user)); } }) .catch(() => { if (!cancelled) { setHasStoredUser(false); } }); return () => { cancelled = true; }; }, [isTestMode]); if (isTestMode) { return ; } if (auth.isLoading || auth.activeNavigator || hasStoredUser === null) { return
Loading...
; } if (auth.error) { return (

Authentication Error

{auth.error.message}

); } if (!hasActiveAuthUser && !hasStoredUser) { return ; } return ; }