菜单与权限控制
在 Nodesify Admin 中,菜单的可见性与基于角色的访问控制 (RBAC) 系统紧密集成。这确保了用户只能看到与其角色和权限相关的导航项。
工作原理
- 菜单定义:菜单在数据库中定义(通过“系统管理 > 菜单管理”进行管理)。每个菜单项都可以选择性地链接到一个特定的权限代码 (
authCode)。 - 角色分配:菜单被显式分配给角色。
- 动态渲染:当用户登录时,后端 (
/menus) 仅返回分配给其角色的菜单树。前端根据该树动态渲染导航栏。
默认菜单结构与权限
下表列出了系统中预置的默认菜单项及其关联的权限代码(如适用)。
| 菜单名称 | 路径 | 关联权限代码 | 描述 |
|---|---|---|---|
| 仪表盘 | /dashboard | - | 仪表盘项目的根目录。 |
| └ 分析页 | /dashboard/analytics | Dashboard:Analytics | 分析和统计视图。 |
| └ 工作台 | /dashboard/workspace | Dashboard:Workspace | 个人工作台视图。 |
| 业务模块 | /business | - | 业务模块的根目录。 |
| └ 财务管理 | /business/finance | Business:Finance | 财务管理模块。 |
| 库存管理 | /inventory | - | 库存模块的根目录。 |
| └ 库存概览 | /inventory/overview | Inventory:Overview | 库存状态概览。 |
| 系统管理 | /system | - | 系统管理的根目录。 |
| └ IAM | /system/iam | - | 身份与访问管理组。 |
| └ 用户管理 | /system/user | System:User:List | 管理系统用户。 |
| └ 部门管理 | /system/dept | System:Dept:List | 管理组织部门。 |
| └ 角色管理 | /system/role | System:Role:List | 管理角色与权限。 |
| └ 资源配置 | /system/resources | - | 系统资源管理组。 |
| └ 菜单管理 | /system/menu | System:Menu:List | 关键: 配置这些菜单项。 |
| └ 字典管理 | /system/dict | System:Dict:List | 管理数据字典。 |
| └ 文件管理 | /system/file | System:File:List | 管理已上传文件。 |
| └ 运营监控 | /system/operations | - | 运营工具组。 |
| └ 通知公告 | /system/notice | System:Notice:List | 系统范围的通知。 |
| └ 日志管理 | /system/log | System:Log:List | 查看访问和操作日志。 |
| └ 参数配置 | /system/config | System:Config:List | 全局系统配置。 |
| └ API 管理 | /system/api | System:Api:List | 管理后端 API 权限。 |
| └ 会话管理 | /system/session | System:Session:List | 管理活跃用户会话。 |
前端集成
前端应用 (apps/web-ele) 从后端 API 获取用户的菜单结构。
- API 接口:
GET /menus - 逻辑: 后端过滤完整的菜单列表,仅返回分配给用户当前角色的项。
- 可见性: 如果某个菜单未分配给用户的角色,它将不会出现在 API 响应中,因此也不会在侧边栏渲染。
权限代码 (authCode)
authCode 字段作为视觉菜单与功能性 API 权限之间的桥梁。
- 当一个带有
authCode的菜单被分配给用户时,系统也会授予他们该特定的权限代码(如:System:User:List)。 - 这允许前端通过检查
hasPermission('System:User:List')来有条件地渲染页面内部的按钮或元素,而不不仅仅是菜单项本身。