|
|
@@ -6,7 +6,6 @@ import cn.com.taiji.core.entity.dict.user.SystemType; |
|
|
|
import cn.com.taiji.core.entity.user.UserMenu; |
|
|
|
import cn.com.taiji.core.entity.user.UserPerm; |
|
|
|
import cn.com.taiji.core.manager.cache.RedisCacheManager; |
|
|
|
import cn.com.taiji.core.manager.tools.SystemFinals; |
|
|
|
import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError; |
|
|
|
import cn.com.taiji.core.repo.jpa.user.AccountUserRoleRepo; |
|
|
|
import cn.com.taiji.core.repo.jpa.user.UserMenuRepo; |
|
|
@@ -42,13 +41,20 @@ public class RbacPermManagerImpl extends RedisCacheManager implements RbacPermMa |
|
|
|
if (!isMatch(loginSource, menu.getSystemType())) |
|
|
|
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("登录来源方与菜单所属系统不匹配,请核实入参!"); |
|
|
|
List<String> roleIds = accountUserRoleRepo.findRoleByOpenIdAndSystemType(openId, menu.getSystemType()); |
|
|
|
if (isEmpty(roleIds)) |
|
|
|
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("该账号在该系统中没有分配角色,无法访问该系统!"); |
|
|
|
if (loginSource == SourceType.SERVICE_HALL) roleIds.add(appBaseRoleId);// APP |
|
|
|
if (loginSource == SourceType.WECHAT) roleIds.add(miniProgramBaseRoleId);// 微信小程序 |
|
|
|
if (loginSource == SourceType.ALI) roleIds.add(zfbMiniProgramBaseRoleId);// 支付宝小程序 |
|
|
|
if (loginSource == SourceType.WEB && roleIds.size() > 1) |
|
|
|
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("该账号在一个系统中只能分配一个角色,该账户在该系统中分配了多个角色,暂时无法访问,请联系管理员处理!"); |
|
|
|
|
|
|
|
if (loginSource == SourceType.SERVICE_HALL && !roleIds.contains(appBaseRoleId)) |
|
|
|
roleIds.add(appBaseRoleId);// APP |
|
|
|
else if (loginSource == SourceType.WECHAT && !roleIds.contains(miniProgramBaseRoleId)) |
|
|
|
roleIds.add(miniProgramBaseRoleId);// 微信小程序 |
|
|
|
else if (loginSource == SourceType.ALI && !roleIds.contains(zfbMiniProgramBaseRoleId)) |
|
|
|
roleIds.add(zfbMiniProgramBaseRoleId);// 支付宝小程序 |
|
|
|
else { |
|
|
|
if (isEmpty(roleIds)) |
|
|
|
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("该账号在该系统中没有分配角色,无法访问该系统!"); |
|
|
|
if (roleIds.size() > 1) |
|
|
|
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("该账号在一个系统中只能分配一个角色,该账户在该系统中分配了多个角色,暂时无法访问,请联系管理员处理!"); |
|
|
|
} |
|
|
|
|
|
|
|
List<UserPerm> perms = userPermRepo.listBy(roleIds, menu.getId()); |
|
|
|
List<String> permIdentitys = perms.stream().map(UserPerm::getPermIdentity).distinct().collect(Collectors.toList()); |
|
|
|
RbacPermListByOpenIdAndMenuIdResponseDTO res = new RbacPermListByOpenIdAndMenuIdResponseDTO(); |