Files
shanxia2.0/openspec/changes/zkxw-engineering-standards/specs/permission-conventions/spec.md
T
2026-05-30 14:03:11 +08:00

2.6 KiB
Raw Blame History

ADDED Requirements

Requirement: 角色与菜单授权

系统 SHALL 通过 sys_role、sys_role_menu 等模型维护角色与菜单的关联;角色管理界面 SHALL 支持为角色配置可访问菜单树,且勾选子菜单时 SHALL 自动包含必要父菜单(与《shanxia2.0需求 V0.3》§2.1.5 描述一致)。

Scenario: 勾选子菜单

  • WHEN 管理员在角色菜单配置弹窗中仅勾选叶子菜单
  • THEN 保存后角色 SHALL 同时获得该叶子到根路径上的父菜单权限,避免出现「有子无父」的不可达状态

Requirement: 数据权限范围

角色 SHALL 具有 data_scope 字段,取值语义为:全部、本部门、本部门及以下、仅本人、自定义等(与需求 §2.1.5 及表注释一致);当为自定义时,系统 SHALL 使用 sys_role_data_scope_detail 维护 scope_type(部门/用户)与 scope_value。

Scenario: 配置自定义数据权限

  • WHEN 管理员将角色数据权限设为自定义并在弹窗中选择部门与用户
  • THEN 持久化 SHALL 写入 sys_role_data_scope_detail,且运行时查询 SHALL 按明细过滤

Requirement: 多角色权限合并

单个用户允许绑定多个角色;其菜单权限与数据权限 SHALL 分别取所有的角色的权限并集(与需求 §2.1.5「特别注意」一致)。

Scenario: 两角色菜单合并

  • WHEN 用户同时具有角色 R1(菜单集合 M1)与角色 R2(菜单集合 M2)
  • THEN 用户可见菜单 SHALL 为 M1 ∪ M2

Scenario: 两角色数据范围合并

  • WHEN 用户同时具有角色 R1 与 R2,各自数据权限范围不同
  • THEN 可访问数据 SHALL 为两角色数据权限的并集(在实现上与产品确认:取更宽或按需求文档并集语义)

Requirement: Web 与小程序菜单树

菜单管理 SHALL 同时支撑 Web 端与小程序端菜单;系统 SHALL 预置两棵顶层虚拟根(需求中的 parent_id=0 的「web 端菜单」「移动端菜单」),后续菜单 SHALL 挂载其下(与需求 §2.1.6)。

Scenario: 新增移动端菜单

  • WHEN 管理员新增小程序端一级菜单
  • THEN 该节点 SHALL 挂在移动端根节点之下,且 visible/status 字段符合规范枚举

Requirement: 超级管理员与租户

租户管理 SHALL 仅对超级系统管理员开放(与需求 §2.1.1);其他系统管理 SHALL 在租户上下文中执行,与 api-conventions 中租户隔离一致。

Scenario: 非 superadmin 访问租户管理

  • WHEN 非超级管理员请求租户管理接口或页面
  • THEN 系统 SHALL 拒绝访问