package com.iplatform.base.util;
|
|
import com.iplatform.base.SecurityConstants;
|
import com.walker.infrastructure.utils.StringUtils;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
public class RoleUtils {
|
|
/**
|
* 把登录缓存中的角色id和从数据库加载的用户菜单角色合并到一起。
|
* <pre>
|
* 1) 登录缓存中保存的角色分两部分:
|
* 1.1 用户角色id,即:s_role 中保存的id
|
* 1.2 Security定义的角色名称,如:ROLE_USER / ROLE_ADMIN/ ROLE_SUPER 等。
|
* 2) 用户重新获取菜单权限后,角色ID从数据库查询(因为存在角色禁用、删除等)
|
* 3) 为了保持实时性,最终要合并这两部分角色ID,否则会出现没有权限访问错误。
|
* </pre>
|
* @param loginCacheRoles 登录缓存中的角色ID集合
|
* @param menuRoles 从数据库加载的菜单角色ID集合
|
* @return
|
* @date 2024-01-31
|
*/
|
public static final List<String> combineMenuRoleAndSecurityRole(List<String> loginCacheRoles, List<String> menuRoles){
|
if(StringUtils.isEmptyList(menuRoles)){
|
return loginCacheRoles;
|
}
|
List<String> data = new ArrayList<>(8);
|
for(String securityRoleName : loginCacheRoles){
|
if(securityRoleName.equals(SecurityConstants.ROLE_USER)
|
|| securityRoleName.equals(SecurityConstants.ROLE_ADMIN)
|
|| securityRoleName.equals(SecurityConstants.ROLE_SUPER_ADMIN)
|
|| securityRoleName.equals(SecurityConstants.ROLE_MERCHANT)){
|
data.add(securityRoleName);
|
}
|
}
|
data.addAll(menuRoles);
|
return data;
|
}
|
}
|