import { Navigate, Outlet } from 'react-router-dom' import { Result, Spin } from 'antd' import { useAuth } from '@/stores/auth' const RequireAuth = () => { const { user } = useAuth() if (!user) return return } export const RequirePlatformAdmin = () => { const { user } = useAuth() if (!user) return if (user.role !== 'platform_admin') return return } export const RequireStaff = () => { const { user } = useAuth() if (!user) return if (user.role === 'platform_admin') return return } export const RequireSupervisor = () => { const { user } = useAuth() if (!user) return if (user.role !== 'admin' && user.role !== 'supervisor') return return } export const RequireTenantAdmin = () => { const { user } = useAuth() if (!user) return if (user.role !== 'admin') return return } export const RequirePermission = ({ anyOf }: { anyOf: string[] }) => { const { user, permissions, permissionsLoaded } = useAuth() if (!user) return if (!permissionsLoaded) { return
} if (!anyOf.some(code => permissions.has(code))) { return } return } export default RequireAuth