import { Navigate, Outlet } from 'react-router-dom';
import { useAuth } from './AuthContext';
export const ProtectedRoute = ({ requiredRole, children }) => {
const { token, loading, user } = useAuth();
if (loading) {
return (
sync
Verifying LarShield Session...
);
}
if (!token) return ;
if (requiredRole) {
const isMasterAuth = sessionStorage.getItem('superAdminAuth') === 'true';
const isImpersonating = !!localStorage.getItem('original_admin_token');
const role = user?.role;
let hasPermission = false;
if (Array.isArray(requiredRole)) {
hasPermission = requiredRole.includes(role) || role === 'super_admin' || isMasterAuth;
} else if (requiredRole === 'super_admin') {
hasPermission = role === 'super_admin' || isMasterAuth || isImpersonating;
} else if (requiredRole === 'admin') {
hasPermission = role === 'admin' || role === 'super_admin' || isMasterAuth || isImpersonating;
} else if (requiredRole === 'support_engineer') {
hasPermission = role === 'support_engineer' || role === 'admin' || role === 'super_admin' || isMasterAuth;
} else {
hasPermission = role === requiredRole || role === 'super_admin' || isMasterAuth;
}
if (!hasPermission) {
return ;
}
}
return children ? children : ;
};