raghub-fe / frontend /src /components /ProtectedRoute.tsx
lifedebugger's picture
Deploy files from GitHub repository with LFS
6cd3bab
import { Navigate, Outlet, useLocation } from "react-router-dom";
import type { UserRole } from "@/lib/auth";
import { useAuth } from "@/hooks/useAuth";
type ProtectedRouteProps = {
allowedRoles?: UserRole[];
};
export function ProtectedRoute({ allowedRoles }: ProtectedRouteProps) {
const { isAuthenticated, role, dashboardPath } = useAuth();
const location = useLocation();
if (!isAuthenticated) {
return (
<Navigate to="/login" replace state={{ from: location.pathname }} />
);
}
if (allowedRoles && !allowedRoles.includes(role)) {
return <Navigate to={dashboardPath} replace />;
}
return <Outlet />;
}