import { useAtom } from 'jotai'; import { authStateAtom } from '../atoms/auth'; export const usePermissions = () => { const [authState] = useAtom(authStateAtom); const hasPermission = (permission: string): boolean => { if (!authState.user?.permissions) { console.log(`🔐 [usePermissions] 用户权限数据为空:`, authState.user); return false; } const hasAccess = authState.user.permissions.includes(permission); console.log(`🔐 [usePermissions] 检查权限 "${permission}": ${hasAccess}, 用户权限:`, authState.user.permissions); return hasAccess; }; const hasAnyPermission = (permissions: string[]): boolean => { return permissions.some(permission => hasPermission(permission)); }; const hasAllPermissions = (permissions: string[]): boolean => { return permissions.every(permission => hasPermission(permission)); }; const hasRole = (roleName: string): boolean => { if (!authState.user?.roles) return false; return authState.user.roles.includes(roleName); }; const hasAnyRole = (roleNames: string[]): boolean => { return roleNames.some(roleName => hasRole(roleName)); }; const hasAllRoles = (roleNames: string[]): boolean => { return roleNames.every(roleName => hasRole(roleName)); }; return { hasPermission, hasAnyPermission, hasAllPermissions, hasRole, hasAnyRole, hasAllRoles }; };