"use client"; import LockOutlinedIcon from "@mui/icons-material/LockOutlined"; import { Alert, Box, CircularProgress, Stack, Typography } from "@mui/material"; import { usePathname } from "next/navigation"; import type { ReactNode } from "react"; import { permissionForPath } from "@/lib/permissions"; import { useAccessStore } from "@/store/accessStore"; export const RoutePermissionGuard = ({ children, }: { children: ReactNode; }) => { const pathname = usePathname(); const permissions = useAccessStore((state) => state.permissions); const loading = useAccessStore((state) => state.loading); const requiredPermission = permissionForPath(pathname); if (requiredPermission && loading) { return ( ); } if (requiredPermission && !permissions.includes(requiredPermission)) { return ( }> 无权访问此功能 当前项目角色缺少权限:{requiredPermission} ); } return children; };