一、功能介绍

权限中心由「角色权限」和「权限组管理」两部分组成。角色定义员工的 Web/员工端菜单、功能点、可查看数据范围和客资分配范围;权限组可在角色之上追加菜单功能权限和可见组织,并绑定带生效、失效时间的员工。当前有效权限不是覆盖关系:多个角色与有效权限组的菜单/功能点按并集合并,多个角色的数据范围取最宽值。必须特别注意,角色配置当前没有按企业或根组织隔离,角色配置实际是全局共享数据;权限组已按企业打标隔离,仅存量未打标权限组保持全局共享。

二、功能亮点

  1. 角色页按名称、编码、显示名、岗位角色和分组名称在前端过滤,并按导购、经销商、店长、设计师等分组展示。
  2. 角色同时配置自己数据、所属组织数据、所属组织及下级组织数据,以及客资分配范围。
  3. Web 端主菜单和员工端主菜单分别勾选;保存时自动补齐父菜单和内部 `MENU_VISIBLE` 标记。
  4. 权限组可追加菜单功能、可见组织和员工授权,并为绑定关系设置生效时间、失效时间和授权原因。
  5. 权限变化会清理相关员工的权限缓存;角色数据范围或权限组组织范围变化还会触发员工数据关系重建。
  6. 前端路由根据菜单权限跳转 403,按钮根据功能码显示或禁用;是否真正安全仍取决于对应业务接口是否有服务端守卫。

三、使用场景

适用于建立销售、客服、运营、门店主管等岗位角色,控制员工可进入的 Web/员工端页面和操作按钮;也适用于在不改变基础角色的前提下,用权限组临时追加某项菜单权限或一组可见组织。当前角色仍为全局共享实现(权限组已按企业打标隔离),不适合未经隔离整改的多企业生产配置,只能在已确认单一权限域的受控环境中操作。

四、使用权限

  1. 进入角色页需要 `/platform/permission` 路由可见;进入权限组页需要 `/platform/permission-groups` 路由可见。
  2. 权限组页面用 `add`、`edit`、`del` 控制新增、编辑/配置/授权和删除按钮。
  3. 角色页没有按按钮权限隐藏新建、编辑和保存,能进入页面的用户会看到这些操作。
  4. 角色与权限组控制器的管理接口已有服务端功能守卫(view、add、edit、del);前端菜单和按钮限制不能代替服务端授权。
  5. 角色和权限组均为高风险全局配置,只应由受控管理员账号操作;在租户隔离和服务端守卫完成前,不应向普通企业管理员开放。
  6. “管理员角色”开关不是超级管理员通配授权;导航的超级管理员放行识别启用且 `roleCode=admin` 的角色。

五、前置条件

  1. 先制作最小权限矩阵:逐项列出角色、Web 菜单、员工端菜单、功能码、数据范围、客资分配范围和预期组织。
  2. 盘点目标员工已有的全部角色与权限组。权限按并集叠加,新增一个收敛角色不会抵消已有宽权限。
  3. 为每个角色准备唯一名称和稳定岗位类型。新建角色不检查名称重复,也不会生成 `roleCode`,不要通过重名角色表达不同职责。
  4. 角色和权限组都不允许多人同时编辑。角色实体已有 @Version 乐观锁,并发编辑时后写请求会收到冲突提示而不会覆盖;权限组实体没有 @Version,权限组并发修改没有版本冲突检测。
  5. 明确三种数据范围:自己数据、所属组织数据、所属组织及下级组织数据;多角色取最宽值,默认值也是所属组织及下级组织。
  6. 使用权限组前列出需要追加的精确组织 ID 和员工名单,并设置明确失效时间;权限组授权不校验开始时间早于结束时间,提交前手工核对时区和先后顺序。不要把权限组作为永久绕过基础角色治理的工具。
  7. 准备至少两个专用测试账号:一个应获得权限,一个明确不应获得权限;不要使用当前配置管理员本人做唯一验收。
  8. 当前角色跨企业共享;权限组已按企业打标隔离,仅存量未打标权限组保持全局共享。若系统承载多个企业,停止生产变更并先完成企业隔离、接口守卫和历史数据归属整改。

六、操作步骤

  1. 进入「业务中台与配置 → 组织与权限 → 权限中心」。角色列表加载后默认不会直接展开第一个角色的权限,点击目标角色再加载详情。
  2. 在左侧输入角色名称或编码。该搜索也匹配显示名、岗位角色和角色分组,但只过滤已加载的完整角色列表。先核对角色 ID、名称、数据范围和分配范围,避免修改重名角色。
  3. 需要新增时点击「+ 新角色」或角色配置入口。填写角色名称、描述和角色类型;角色名称页面最多 50 个字符,角色类型最多 50 个字符。后端不查重且不生成角色编码,保存前人工查重。
  4. 设置「数据权限范围」:自己数据最窄,所属组织数据其次,所属组织及下级组织数据最宽。若员工有多个角色,系统取其中最宽值,不能用另一个窄角色覆盖。
  5. 设置「分配范围」:所属组织及下级组织,或同级组织及下级组织。该字段被员工端客资分配流程消费;多角色可能同时贡献两种范围。
  6. 谨慎设置「是否区分大中小」和「是否为管理员角色」。前者参与按组织规模解析岗位变体;后者只被部分业务逻辑识别,并不会自动授予全部菜单或接口权限。
  7. 点击目标角色进入权限树。分别切换「Web 端主菜单」和「员工端主菜单」,使用「搜索菜单」定位节点,展开父级并逐项勾选菜单及其功能点。
  8. 保存前检查父菜单、叶子菜单和按钮功能。角色菜单权限以完整目标集合覆盖保存,页面会自动给已提交菜单及父级加入 `MENU_VISIBLE`;取消节点会清除其子菜单和功能。不得在两个窗口同时编辑,并发保存可相互撤销权限。
  9. 点击「保存」,等待成功提示。保存会使该角色关联员工的权限缓存失效,但不要只凭提示验收。
  10. 如需追加跨角色权限,进入「权限组管理」,先按名称或编码查重,再新增权限组。权限组编码要求非空且忽略大小写唯一;应用类型可分开配置:`appType` 筛选已生效(ALL 视为不过滤),创建和更新按提交值保存,未提交时创建默认 `ALL`、更新保留原值。
  11. 在权限组操作列点击「配置权限」,勾选需要追加的菜单与功能点并保存。权限组保存时不校验菜单 ID 和功能编码,因此只允许通过当前页面选择已展示的定义,禁止手工构造接口请求。
  12. 点击「配置可见组织」。逐个勾选组织;选择普通组织不会在界面自动勾选子组织,省级虚拟节点会保存其下全部总代组织。保存可见组织时不校验组织是否存在或属于当前操作者范围,提交前必须从正式组织树核对。
  13. 点击「授权员工」或「绑定员工」,选择目标员工,按需填写生效时间、失效时间和授权原因。权限组授权不校验开始时间早于结束时间,需手工复核;绑定员工不校验其是否属于当前企业或操作者组织范围,必须复核员工 ID、账号、手机、企微 ID 和组织。
  14. 使用正向测试账号重新登录或刷新权限会话,验证菜单、路由、按钮、数据量、组织边界和客资分配候选人;再用反向账号直接访问页面 URL 并调用关键业务动作,确认返回 403 或业务拒绝。
  15. 权限组撤权时选择已授权员工并移除;删除权限组会软删除权限组并清除其组织范围。撤权后等待缓存清理和关系重建,再重复正反向验证。
  16. 角色页已提供停用/启用与删除入口(分别受 edit、del 按钮权限控制);后端删除角色前会校验员工引用,仍有员工持有该角色时拒绝删除。
从组织与权限进入权限中心,查看角色列表与新建角色入口。

从组织与权限进入权限中心,查看角色列表与新建角色入口。

权限中心角色权限列表入口截图
在过滤框输入 E2E,角色列表实时收敛到匹配角色。

在过滤框输入 E2E,角色列表实时收敛到匹配角色。

按角色名称过滤角色列表截图
点击编辑打开角色配置弹窗,核对角色名称、登录许可与管理员角色等基础数据。

点击编辑打开角色配置弹窗,核对角色名称、登录许可与管理员角色等基础数据。

角色配置弹窗基础数据截图

七、字段与规则说明

  1. 角色菜单、角色功能点和有效权限组菜单功能按并集计算;权限组是追加授权,不会覆盖或收窄角色权限。
  2. 多角色的数据范围通过 `resolveMaxScope` 取最宽值:自己数据 < 所属组织数据 < 所属组织及下级组织数据。没有有效范围时默认所属组织及下级组织。
  3. 权限组可见组织仍受角色数据范围控制:自己数据时权限组组织不贡献范围;所属组织数据只使用勾选组织本身;所属组织及下级组织数据会扩展勾选组织的下级。
  4. 页面勾选菜单时,后端会自动保存 `MENU_VISIBLE`;功能点是否显示为按钮取决于菜单定义中的功能码与业务页使用的权限键是否一致。
  5. 角色菜单权限以完整目标集合覆盖保存,没有版本号,并发保存可相互撤销权限。
  6. 角色页搜索是前端本地过滤,虽然占位文案写“名称/编码”,新建角色没有 `roleCode` 录入项。
  7. 角色名称只在页面校验必填和最多 50 字符;后端不查重。角色类型不是角色编码。
  8. “管理员角色”开关不是超级管理员通配授权;真正的导航放行按启用的 `roleCode=admin` 判断。
  9. 角色配置当前没有按企业或根组织隔离,角色配置实际是全局共享数据。
  10. 权限组按创建时企业打标隔离,存量未打标权限组保持全局共享;权限组编码在未删除记录中忽略大小写唯一。
  11. 权限组实体没有 @Version,权限组并发修改没有版本冲突检测。
  12. 权限组员工授权支持开始和结束时间;权限组授权不校验开始时间早于结束时间。只有处于有效期、权限组启用且关系未删除时才参与有效权限。
  13. 角色页没有按按钮权限隐藏新建、编辑和保存;角色与权限组控制器的管理接口已有服务端功能守卫。
  14. 权限组保存时不校验菜单 ID 和功能编码;保存可见组织时不校验组织是否存在或属于当前操作者范围;绑定员工不校验其是否属于当前企业或操作者组织范围。
  15. 前端路由和按钮权限不是完整安全边界。每个高风险业务接口是否具有服务端功能守卫,必须按功能单独验证,不能从本页保存成功推断。
  16. 角色页提供停用/启用与删除入口;后端删除角色前会校验员工引用,有员工持有该角色时拒绝删除。

八、风险与限制

当前角色仍是跨企业共享的高影响配置(权限组已按企业打标隔离,存量未打标数据除外);错误操作可能让其他企业员工看到菜单、执行功能或扩大组织数据范围。权限并集与最宽数据范围规则还会使看似收敛的新增角色反而叠加权限。并发编辑角色已有 @Version 乐观锁冲突提示,无版本的并发保存仍可撤销菜单权限;错误的权限组组织、员工绑定、倒置或无限期授权、重名角色和对“管理员角色”开关的误解,都可能造成长期越权。

注意

多企业生产环境暂停开放角色与权限组配置,直到企业隔离、操作者授权边界和服务端功能守卫通过验收。任何变更都必须先盘点员工全部角色和权限组,再以正向、反向账号验证菜单、按钮、接口与数据范围;禁止绕过页面删除角色或手工提交菜单、组织和员工 ID。

九、常见问题

  1. 为什么给员工新增了“自己数据”角色,仍能看到下级组织?员工可能还有更宽角色;多角色数据范围取最宽值,新增窄角色不会收回旧权限。
  2. 权限组会替换角色权限吗?不会。有效权限组的菜单和功能点与角色权限做并集合并,只会追加。
  3. 为什么普通组织没有自动勾选下级?页面不会级联勾选;最终是否扩展下级取决于员工最宽角色数据范围。
  4. 为什么勾选“管理员角色”后仍缺菜单?“管理员角色”开关不是超级管理员通配授权,导航超级管理员放行识别 `roleCode=admin`。
  5. 为什么能搜到角色编码却不能给新角色填写编码?搜索会匹配既有 `roleCode`,但新建表单和创建服务都不生成角色编码。
  6. 为什么保存后员工仍是旧权限?等待权限缓存失效和关系重建,刷新或重新登录;随后核对该员工全部角色、权限组和授权有效期。
  7. 菜单可见是否代表按钮和接口都可用?不是。菜单、功能码和服务端接口守卫是不同层,必须实际验证关键请求。
  8. 权限组能按应用类型分开配置吗?可以。`appType` 筛选已生效(ALL 视为不过滤),按提交值保存;未提交时创建默认 `ALL`、更新保留原值。
  9. 为什么不建议在多企业环境使用?角色缺少企业隔离,配置及授权关系可能跨企业共享;权限组虽已按企业打标,存量未打标权限组仍全局共享。

十、相关指南

新建角色后通过《管理员工》绑定主角色和多角色;数据边界依赖《管理组织架构》;离职撤权前先按《执行客户交接》处理客户、客资与待办。

说明

页面入口:/platform/permission、/platform/permission-groups