import type { ReactNode } from 'react';
import { Suspense } from 'react';
import { useLocation } from 'react-router-dom';
import { useShellOutletContext } from '@/app/shellOutletContext';
import { PageSkeleton } from '@/components/ui/page-skeleton';
import { canUserRoleAccessModuleRoute } from '@/shared/constants/moduleRoutes';
import NotFound from '@/pages/NotFound';
interface ModuleRouteGuardProps {
readonly children: ReactNode;
}
export function ModuleRouteGuard({ children }: ModuleRouteGuardProps) {
const location = useLocation();
const shell = useShellOutletContext();
// Forbidden direct-URL access lands on the 404 page (not a silent redirect).
if (!canUserRoleAccessModuleRoute(location.pathname, shell.userRole)) {
return ;
}
return (
}>
{children}
);
}