import { useContext } from "react";
import { Navigate, Outlet } from "react-router-dom";
import { AuthContext } from "@/context/auth-context";
import ActivityIndicator from "../indicators/activity-indicator";
export default function ProtectedRoute({
requiredRoles,
}: {
requiredRoles: ("admin" | "viewer")[];
}) {
const { auth } = useContext(AuthContext);
if (auth.isLoading) {
return (
);
}
// Unauthenticated mode
if (!auth.isAuthenticated) {
return ;
}
// Authenticated mode (8971): require login
if (!auth.user) {
return ;
}
// If role is null (shouldn’t happen if isAuthenticated, but type safety), fallback
// though isAuthenticated should catch this
if (auth.user.role === null) {
return ;
}
if (!requiredRoles.includes(auth.user.role)) {
return ;
}
return ;
}