import { Navigate, Outlet } from 'react-router-dom'; import { useAuth } from './AuthContext'; export const ProtectedRoute = ({ requiredRole, children }) => { const { token, loading, user } = useAuth(); if (loading) { return (
LarShield Logo
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 : ; };