ソースを参照

修复BUG

master
梁超 3週間前
コミット
3efc54b9a6

+ 14
- 8
zhywpt-app-userw/src/main/java/cn/com/taiji/userw/manager/rbac/RbacPermManagerImpl.java ファイルの表示

@@ -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();

読み込み中…
キャンセル
保存