import { getAuth } from './auth' // 权限定义 export const PERMISSIONS = { // 用户管理权限 USER_MANAGE: 'user:manage', USER_CREATE: 'user:create', USER_UPDATE: 'user:update', USER_DELETE: 'user:delete', USER_VIEW: 'user:view', // 游戏管理权限 GAME_MANAGE: 'game:manage', GAME_CREATE: 'game:create', GAME_UPDATE: 'game:update', GAME_DELETE: 'game:delete', GAME_VIEW: 'game:view', // 订单管理权限 ORDER_MANAGE: 'order:manage', ORDER_VIEW: 'order:view', // 报表分析权限 REPORT_VIEW: 'report:view', // 系统设置权限 SETTING_MANAGE: 'setting:manage', } // 角色权限映射 export const ROLE_PERMISSIONS = { ADMIN: [ // 管理员拥有所有权限 PERMISSIONS.USER_MANAGE, PERMISSIONS.USER_CREATE, PERMISSIONS.USER_UPDATE, PERMISSIONS.USER_DELETE, PERMISSIONS.USER_VIEW, PERMISSIONS.GAME_MANAGE, PERMISSIONS.GAME_CREATE, PERMISSIONS.GAME_UPDATE, PERMISSIONS.GAME_DELETE, PERMISSIONS.GAME_VIEW, PERMISSIONS.ORDER_MANAGE, PERMISSIONS.ORDER_VIEW, PERMISSIONS.REPORT_VIEW, PERMISSIONS.SETTING_MANAGE, ], AGENT: [ // 代理商只有查看权限,没有管理权限 PERMISSIONS.GAME_VIEW, PERMISSIONS.ORDER_VIEW, PERMISSIONS.REPORT_VIEW, ] } // 路由权限映射 export const ROUTE_PERMISSIONS = { 'Dashboard': [], // 仪表盘所有用户都可以访问 'Users': [PERMISSIONS.USER_VIEW], 'Games': [PERMISSIONS.GAME_VIEW], 'Orders': [PERMISSIONS.ORDER_VIEW], 'Reports': [PERMISSIONS.REPORT_VIEW], 'Settings': [PERMISSIONS.SETTING_MANAGE], 'ErrorTest': [], // 错误测试页面所有用户都可以访问 'PermissionTest': [], // 权限测试页面所有用户都可以访问 } // 获取当前用户信息 export function getCurrentUser() { const auth = getAuth() const user = auth?.user || null return user } // 获取当前用户类型 export function getCurrentUserType() { const user = getCurrentUser() const userType = user?.userType || null return userType } // 检查用户是否有指定权限 export function hasPermission(permission) { const userType = getCurrentUserType() if (!userType) return false const userPermissions = ROLE_PERMISSIONS[userType?.toUpperCase()] || [] return userPermissions.includes(permission) } // 检查用户是否有指定权限列表中的任意一个 export function hasAnyPermission(permissions) { return permissions.some(permission => hasPermission(permission)) } // 检查用户是否有指定权限列表中的所有权限 export function hasAllPermissions(permissions) { return permissions.every(permission => hasPermission(permission)) } // 检查用户是否可以访问指定路由 export function canAccessRoute(routeName) { // 管理员可以访问所有路由 if (isAdmin()) return true const requiredPermissions = ROUTE_PERMISSIONS[routeName] || [] if (requiredPermissions.length === 0) return true // 没有权限要求,默认允许访问 return hasAnyPermission(requiredPermissions) } // 检查用户是否为管理员 export function isAdmin() { const userType = getCurrentUserType() const isAdminUser = userType?.toLowerCase() === 'admin' return isAdminUser } // 检查用户是否为代理商 export function isAgent() { return getCurrentUserType()?.toLowerCase() === 'agent' } // 获取用户可访问的路由列表 export function getAccessibleRoutes() { const userType = getCurrentUserType() if (!userType) { return [] } // 管理员可以访问所有路由 if (isAdmin()) { return ['Dashboard', 'Users', 'Games', 'Orders', 'Reports', 'Settings', 'ErrorTest', 'PermissionTest'] } const userPermissions = ROLE_PERMISSIONS[userType?.toUpperCase()] || [] const accessibleRoutes = [] Object.entries(ROUTE_PERMISSIONS).forEach(([routeName, requiredPermissions]) => { if (requiredPermissions.length === 0 || hasAnyPermission(requiredPermissions)) { accessibleRoutes.push(routeName) } }) return accessibleRoutes }