Skip to content

组织、用户与权限 ​

权限体系由认证身份、租户、组织、角色、菜单、按钮、字段可见性和数据库策略共同组成。管理目标是让用户只获得完成职责所需的能力。

权限链路 ​

text
Supabase Auth 用户
  → 平台用户状态
  → 所属租户与组织
  → 一个或多个角色
  → 应用 / 目录 / 页面 / 按钮权限
  → 字段与数据范围
  → RLS、RPC、数据库函数或 Edge Function 再校验

组织管理 ​

组织用于表达部门、团队或业务单元。调整组织前先确认:

  • 目标组织属于同一租户。
  • 组织移动不会造成负责人、人员或数据范围失去归属。
  • 删除前不存在仍在使用的下级组织或人员。

用户管理 ​

用户维护包括账号状态、租户、组织和角色分配。停用用户用于立即阻止继续进入业务;删除 Auth 用户前还应考虑现有会话,因为删除用户本身不保证所有已签发访问令牌立即失效。

角色管理 ​

角色授权树同时包含页面和业务按钮。分配时遵循:

  1. 先授予页面,再授予该页面下需要的按钮。
  2. 新增、编辑、删除、提交、审核、驳回、导出、AI 分析分别授权。
  3. 不给没有父页面的角色单独授予子按钮。
  4. 修改后用真实普通账号验证,不使用平台超级管理员代测。

菜单管理 ​

业务导航来自 Supabase sys_menu,而非前端静态路由。菜单不出现时依次检查:

  1. 菜单记录是否存在且启用。
  2. 是否被隐藏,父目录是否可见。
  3. app_code 是否属于当前应用。
  4. component 是否指向现有视图。
  5. 当前角色是否拥有该菜单。

框架级公开页(登录、403、404、500 等)才使用静态路由。

平台超级管理员边界 ​

平台超级管理员用于跨租户控制面:全局菜单、租户、网站发布、AI 配置和受控 AI 写入。普通的租户内用户、角色、字典和业务维护不应被错误地限制为“仅平台超级管理员”。平台超级管理员可以作为权限解析的隐式覆盖,但所有控制面操作仍应有明确按钮代码和服务端边界。

权限问题排查 ​

问题判断方法
页面看不到查应用、菜单、角色与父目录
页面能看,按钮没有查精确按钮权限
按钮有,提交失败查服务端权限、记录状态和 RLS
能读到其他租户数据立即按安全问题处理,检查 RLS/RPC 租户谓词
角色修改未生效刷新用户会话和菜单缓存后重试

基于 MulanPSL-2.0 发布