HZERO微服务平台08: 角色合并功能梳理
目录
- 说明:
- 相关功能、接口
- 角色的获取
- 登陆时查询菜单
- 【菜单配置】
- 【角色管理】
- 权限检查
- 网关权限检查
- 角色分配api时能够查看的api列表
- 前端切换当前角色按钮的显示/隐藏
说明:
一个用户可以拥有多个角色, hzero有"角色合并"功能, 开启"角色合并"后对功能、接口有哪些影响?
比如:
登录时显示的菜单是所有角色的菜单还是当前角色的菜单?
菜单管理时, 管理的是所有角色的菜单还是当前角色的菜单?
角色管理时, 管理的是所有角色的菜单还是当前角色的菜单?
网关鉴权时, 校验的是所有角色的权限还是当前角色的权限?
相关功能、接口
角色的获取
CustomUserDetails对象:
getRoleId() 获取当前角色
roleMergeIds() 获取合并的角色列表
登陆时查询菜单
/iam/v1/menus/tree?lang=zh_CN&unionLabel=false
登陆时查询菜单树;
实测: 有合并角色的效果;
/iam/v1/menus/tree?labels=IOSP_MENU&lang=zh_CN&roldId=142310205194166272&unionLabel=false 这里的roleId参数无效;
代码考虑了角色合并:
MenuController#listNavMenuTree
MenuRepositoryImpl#selectRoleMenuTree
List roleIds = self.roleMergeIds();
List
【菜单配置】
/iam/v1/0/menus/manage-tree?page=0&scope=CUSTOM&size=10
只过滤了当前角色:
MenuRepositoryImpl#selectMenuTreeInTenant
menuParams.setRoleId(self.getRoleId());
【角色管理】
/iam/v1/roles/self/manageable-roles?adminRoleId=142310205194166272&page=0&size=10
只过滤了当前角色:
RoleController#listSelfManageableRoles
RoleServiceImpl#selectSelfManageableRoles
RoleRepositoryImpl#selectSelfManageableRoles
params.setUserId(self.getUserId());
权限检查
/iam/v1/menus/check-permissions
实测: 有合并角色的效果;
考虑了合并角色
MenuController#checkPermissions
MenuRepositoryImpl#checkPermissionSets(java.util.List)
results = menuMapper.checkPermissionSets(self.roleMergeIds(), codes);
网关权限检查
实测: 有合并角色的效果;
user考虑了合并角色, client没有角色合并;
CommonRequestCheckFilter#run
roleIds = details.roleMergeIds();
角色分配api时能够查看的api列表
单据权限、数据权限, 应该可以;
实测: 可以
constant.DocTypeScript
" \n" +
前端切换当前角色按钮的显示/隐藏
如果返回的是空列表, 就不显示切换角色:
/iam/v1/member-roles/self-roles
MemberRoleController#listSelfRoles
RoleRepositoryImpl#selectSelfCurrentTenantRoles
// 如果只有一个层级的角色 则不返回角色列表,否则按层级分组,每个层级只返回一个角色