2.6 KiB
2.6 KiB
默认角色/菜单/权限 最小可用集(全租户)
本文件用于指导 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_menu中role_id对应tenant_id=1且role.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