library-picturebook-activity/docs/migration/default-role-matrix.md
2026-04-01 19:30:33 +08:00

2.6 KiB
Raw Blame History

默认角色/菜单/权限 最小可用集(全租户)

本文件用于指导 Flyway “全租户补齐”迁移脚本的默认授权策略,目标是让任一租户创建后即可登录、看到菜单、并具备最小可用功能入口。

角色role.code

  • super_admin:平台超管(通常仅超级租户/运维使用)
  • tenant_admin:租户管理员(每个租户至少 1 个)
  • school_admin:学校管理端角色
  • teacher:教师端角色
  • student:学生端角色
  • judge:评委端角色

注:目前历史迁移仅对 tenant_id=1 初始化了 school_admin/teacher/student/judge,但线上实际登录已出现 tenant_admin,因此迁移需对全租户补齐该角色。

菜单可见性t_auth_role_menu

tenant_admin租户管理员

  • 默认策略:可见全部管理端菜单,但不包含平台级租户管理(避免非平台人员管理其他租户)。\n
    • 包含:除 permission='super_admin' 以及 permission LIKE 'tenant:%' 的菜单外的所有 t_auth_menu。\n
    • 祖先节点补齐:即使祖先菜单未直接授权,也应在接口层补齐返回。\n
    • 说明:最终可见菜单仍以 t_auth_role_menu 为准;如需更精细裁剪,可在系统中二次授权。

school_admin / teacher / student / judge

  • 默认策略:优先按 tenant_id=1 的同名角色授权模板复制到其他租户(同 role.code。\n
    • 复制范围:t_auth_role_menurole_id 对应 tenant_id=1role.code IN ('school_admin','teacher','student','judge') 的记录。\n
    • 如果模板不存在,则降级为:仅授予 workbench + 与角色端相关的一级菜单(例如 activities/homework)。

权限t_auth_role_permission

权限来源

  • tenant_id=1 为“权限码模板”:将 t_auth_permission(tenant_id=1) 中的权限码复制到所有租户(缺失则补齐)。\n
    • 原因:权限表按租户隔离,但权限码是全局统一的前后端契约;菜单/路由/按钮依赖这些 code。

tenant_admin建议最小集

  • 系统管理(租户内)user:*role:*permission:*menu:*dict:*config:*log:*\n
  • 业务最小可用:建议至少包含 contest:*registration:*judge:*notice:*homework:*work:*activity:*review:score、以及前端提取的权限码(见 docs/migration/permission-inventory.md)。

其他角色

  • 默认按 tenant_id=1 角色模板复制 t_auth_role_permission;不存在模板时至少保证页面可进入(满足路由 meta.permissions)。\n