import React from 'react'; import { Result, Button, Spin } from 'antd'; import { useNavigate } from 'react-router'; import { findRoleAwareLandingPath } from '../auth/menu-policy'; import { usePermission } from '../hooks/usePermission'; import { useUserStore } from '../store/user/userStore'; interface PermissionRouteProps { permission: string; children: React.ReactNode; } const PermissionRoute: React.FC = ({ permission, children }) => { const { permissions, permissionsReady, hasPermission } = usePermission(); const roles = useUserStore((state) => state.user?.roles ?? []); const navigate = useNavigate(); if (!permissionsReady) { return ; } if (!hasPermission(permission)) { const firstPath = findRoleAwareLandingPath(roles, permissions); return ( navigate(firstPath, { replace: true })}> 前往可访问页面 ) : undefined } /> ); } return <>{children}; }; export default PermissionRoute;