import { LucideIcon, LayoutDashboard, Users, Settings, FolderOpen, TestTube, BarChart3, Gauge, FileText, ClipboardList } from 'lucide-react'; // 定义权限类型 export type Permission = | 'dashboard.view' | 'users.view' | 'users.manage' | 'roles.view' | 'roles.manage' | 'permissions.view' | 'permissions.manage' | 'settings.view' | 'settings.manage' // 场景管理权限 | 'scenarios.view' | 'scenarios.manage' | 'scenarios.create' // 用例管理权限 | 'testcases.view' | 'testcases.manage' | 'testcases.create' | 'teststeps.view' | 'teststeps.manage' | 'teststeps.create' // 任务管理权限 | 'tasks.view' | 'tasks.manage' | 'tasks.create' | 'taskreviews.view' | 'taskreviews.manage' | 'taskreviews.create' | 'taskexecutions.view' | 'taskexecutions.manage' | 'taskexecutions.create' // 结果分析权限 | 'functionalanalysis.view' | 'functionalanalysis.manage' | 'performanceanalysis.view' | 'performanceanalysis.manage' | 'issueanalysis.view' | 'issueanalysis.manage' | 'ueanalysis.view' | 'ueanalysis.manage' // 仪表管理权限 | 'devices.view' | 'devices.manage' | 'protocols.view' | 'protocols.manage' | 'configs.view' | 'configs.manage'; export interface MenuItem { title: string; icon: LucideIcon; href: string; permission?: Permission; children?: { title: string; href: string; permission?: Permission; }[]; } export const menuItems: MenuItem[] = [ { title: '仪表盘', icon: LayoutDashboard, href: '/dashboard', permission: 'dashboard.view', }, { title: '场景管理', icon: FileText, href: '/dashboard/scenarios', permission: 'scenarios.view', children: [ { title: '场景列表', href: '/dashboard/scenarios/list', permission: 'scenarios.view', }, { title: '创建场景', href: '/dashboard/scenarios/create', permission: 'scenarios.create', }, ], }, { title: '用例管理', icon: TestTube, href: '/dashboard/testcases', permission: 'testcases.view', children: [ { title: '用例列表', href: '/dashboard/testcases/list', permission: 'testcases.view', }, { title: '创建用例', href: '/dashboard/testcases/create', permission: 'testcases.create', }, { title: '步骤列表', href: '/dashboard/testcases/steps', permission: 'teststeps.view', }, ], }, { title: '任务管理', icon: ClipboardList, href: '/dashboard/tasks', permission: 'tasks.view', children: [ { title: '任务列表', href: '/dashboard/tasks/list', permission: 'tasks.view', }, { title: '创建任务', href: '/dashboard/tasks/create', permission: 'tasks.create', }, { title: '审核任务', href: '/dashboard/tasks/reviews', permission: 'taskreviews.view', }, { title: '执行任务', href: '/dashboard/tasks/executions', permission: 'taskexecutions.view', }, ], }, { title: '结果分析', icon: BarChart3, href: '/dashboard/analysis', permission: 'functionalanalysis.view', children: [ { title: '功能分析', href: '/dashboard/analysis/functional', permission: 'functionalanalysis.view', }, { title: '性能分析', href: '/dashboard/analysis/performance', permission: 'performanceanalysis.view', }, { title: '问题分析', href: '/dashboard/analysis/issue', permission: 'issueanalysis.view', }, { title: 'UE分析', href: '/dashboard/analysis/ue', permission: 'ueanalysis.view', }, ], }, { title: '仪表管理', icon: Gauge, href: '/dashboard/instruments', permission: 'devices.view', children: [ { title: '设备列表', href: '/dashboard/instruments/devices', permission: 'devices.view', }, { title: '协议列表', href: '/dashboard/instruments/protocols', permission: 'protocols.view', }, { title: '配置列表', href: '/dashboard/instruments/configs', permission: 'configs.view', }, ], }, { title: '用户管理', icon: Users, href: '/dashboard/users', permission: 'users.view', children: [ { title: '用户列表', href: '/dashboard/users/list', permission: 'users.view', }, { title: '角色管理', href: '/dashboard/users/roles', permission: 'roles.view', }, { title: '权限管理', href: '/dashboard/users/permissions', permission: 'permissions.view', }, ], }, { title: '系统设置', icon: Settings, href: '/dashboard/settings', permission: 'settings.view', }, ]; // 导出权限检查工具函数 export const hasPermission = (userPermissions: Permission[] | undefined | null, requiredPermission?: Permission): boolean => { // 如果没有设置权限要求,则默认允许访问 if (!requiredPermission) return true; // 如果用户权限为空,则拒绝访问 if (!userPermissions || !Array.isArray(userPermissions)) return false; return userPermissions.includes(requiredPermission); };