/** * Route guard component. * * Wraps protected routes. If the user is not authenticated they are * redirected to `/login` and the intended destination is preserved so the * user lands on it after a successful login. */ import { Navigate, useLocation } from "react-router-dom"; import { useAuth } from "../providers/AuthProvider"; interface RequireAuthProps { /** The protected page content to render when authenticated. */ children: React.JSX.Element; } /** * Render `children` only if the user is authenticated. * * Redirects to `/login?next=` otherwise so the intended destination is * preserved and honoured after a successful login. */ export function RequireAuth({ children }: RequireAuthProps): React.JSX.Element { const { isAuthenticated } = useAuth(); const location = useLocation(); if (!isAuthenticated) { return ( ); } return children; }