ether-docs/02-DESIGN/domains/permission-frontend/spec.md

3.8 KiB
Raw Blame History

RBAC权限管理前端设计方案

Date: 2026-03-21 Status: Approved Type: Frontend Design


整体架构:双层权限体系

层级 管理方式 说明
系统层 管理员手动配置 权限、角色、菜单分配
业务层 自动分配 用户加入项目时自动赋予对应角色权限

一、系统管理员功能(配置权限和角色)

1. 权限管理 /system/permissions

功能清单:

  • 权限列表按类型筛选菜单MENU/按钮BUTTON/API
  • 新建权限code, name, type, resource, method
  • 编辑权限
  • 删除权限
  • 权限与角色关联查看

数据结构:

interface Permission {
  id: string;
  code: string;        // 权限标识,如 user:create
  name: string;        // 权限名称
  type: 'MENU' | 'BUTTON' | 'API';
  resource: string;    // 资源路径
  method: string;      // HTTP方法
  parentCode?: string; // 父级权限
  sortOrder: number;
}

2. 角色管理 /system/roles

功能清单:

  • 角色列表按类型筛选SYSTEM/PROJECT/DEPARTMENT
  • 创建角色:
    • 角色代码(唯一)
    • 角色名称
    • 角色类型
    • 数据权限范围ALL/PROJECT/SELF
    • 关联权限(多选树)
  • 编辑角色
  • 删除角色

数据结构:

interface Role {
  id: string;
  code: string;           // 角色标识
  name: string;            // 角色名称
  type: 'SYSTEM' | 'PROJECT' | 'DEPARTMENT';
  dataScope: 'ALL' | 'PROJECT' | 'SELF';
  permissions: Permission[];
  status: 'ENABLED' | 'DISABLED';
}

3. 用户角色分配 /system/users

功能清单:

  • 用户列表(分页、搜索)
  • 查看用户角色
  • 分配/移除用户角色
  • 查看用户项目参与情况

4. 操作审计日志 /system/audit

功能清单:

  • 权限变更日志
  • 角色分配日志
  • 日志筛选(操作类型、时间范围、操作用户)

二、业务自动授权(基于项目角色)

项目成员管理 项目详情页 → 成员tab

功能清单:

  • 成员列表(显示用户名、角色、项目角色)
  • 添加成员:
    • 选择用户
    • 设置项目角色leader/member/viewer
    • 自动分配对应权限
  • 移除成员(自动回收权限)
  • 修改成员角色

项目角色权限对照:

项目角色 自动获得权限
leader 项目全部操作权限
member 项目基础功能权限
viewer 项目只读权限

三、页面结构

/system
├── /permissions     # 权限管理
│   └── /:id/edit   # 编辑权限
├── /roles          # 角色管理
│   ├── /:id/edit   # 编辑角色
│   └── /new        # 新建角色
├── /users          # 用户管理
│   └── /:id        # 用户详情/角色分配
└── /audit          # 审计日志

/projects
└── /:id/members    # 项目成员管理(在项目详情页)

四、技术实现

技术栈:

  • Vue 3 + TypeScript
  • Vite
  • Ant Design Vue复用现有组件库
  • Pinia状态管理

API对接

  • GET /api/permissions - 权限列表
  • POST/PUT/DELETE /api/permissions
  • GET /api/roles - 角色列表
  • POST/PUT/DELETE /api/roles
  • GET /api/users - 用户列表
  • GET /api/users/{id}/roles - 用户角色
  • POST /api/users/{id}/roles - 分配角色
  • GET /api/users/{id}/projects - 用户项目参与
  • POST /api/users/{id}/projects - 添加到项目
  • DELETE /api/users/{id}/projects/{projectId} - 从项目移除

五、组件清单

组件 说明
PermissionTree 权限树形选择器
RoleSelect 角色下拉选择
DataScopeSelect 数据权限范围选择
UserProjectList 用户项目参与列表
AuditLogTable 审计日志表格