import { Navigate, Outlet, useLocation } from 'react-router-dom';
import { useAuth } from './auth-context';
/** Wraps private routes: anonymous visitors land on /login and return after. */
export function RequireAuth(): React.JSX.Element {
const { user, isLoading } = useAuth();
const location = useLocation();
if (isLoading) return <>>;
if (!user) {
const next = encodeURIComponent(location.pathname + location.search);
return ;
}
return ;
}
/** Wraps auth pages: signed-in users have no business on /login etc. */
export function RequireAnonymous(): React.JSX.Element {
const { user, isLoading } = useAuth();
if (isLoading) return <>>;
if (user) return ;
return ;
}
export function RequireSiteAdmin(): React.JSX.Element {
const { user, isLoading } = useAuth();
if (isLoading) return <>>;
if (!user?.isSiteAdmin) return ;
return ;
}