From d9520c15eb8fe7f240b6018043e617ab1c9184fa Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期一, 26 五月 2025 18:15:17 +0800
Subject: [PATCH] git ch
---
server/service/src/main/java/com/doumee/config/shiro/ShiroRealm.java | 96 ++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 80 insertions(+), 16 deletions(-)
diff --git a/server/service/src/main/java/com/doumee/config/shiro/ShiroRealm.java b/server/service/src/main/java/com/doumee/config/shiro/ShiroRealm.java
index 968f073..9c9af4b 100644
--- a/server/service/src/main/java/com/doumee/config/shiro/ShiroRealm.java
+++ b/server/service/src/main/java/com/doumee/config/shiro/ShiroRealm.java
@@ -4,8 +4,11 @@
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.utils.Constants;
+import com.doumee.dao.business.CompanyPermissionMapper;
+import com.doumee.dao.business.join.CompanyPermissionJoinMapper;
import com.doumee.dao.business.model.Company;
import com.doumee.dao.business.model.CompanyPermission;
+import com.doumee.dao.system.model.SystemDataPermission;
import com.doumee.dao.system.model.SystemPermission;
import com.doumee.dao.system.model.SystemRole;
import com.doumee.dao.system.model.SystemUser;
@@ -15,6 +18,8 @@
import com.doumee.service.system.SystemPermissionService;
import com.doumee.service.system.SystemRoleService;
import com.doumee.service.system.SystemUserService;
+import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
@@ -29,6 +34,7 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
/**
* 鑷畾涔塕ealm锛屽鐞嗚璇佸拰鏉冮檺
@@ -58,6 +64,7 @@
@Lazy
@Autowired
private SystemPermissionService systemPermissionService;
+
/**
* 鏉冮檺澶勭悊
@@ -102,31 +109,88 @@
if(!Constants.equalsInteger(user.getStatus(),Constants.ZERO)){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璐﹀彿淇℃伅宸茶绂佺敤锛屽鏈夌枒闂鑱旂郴绯荤粺绠$悊鍛橈紒");
}
+ List<SystemRole> roles = null;
+ List<SystemPermission> permissions =null;
// 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅
- List<SystemRole> roles = systemRoleService.findByUserId(user.getId());
- List<SystemPermission> permissions = systemPermissionService.findByUserId(user.getId());
if(authenticationToken.getUserType() == 0){
- CompanyPermission c = new CompanyPermission();
- c.setUserId(user.getId());
- c.setIsdeleted(Constants.ZERO);
- List<CompanyPermission> pList = companyPermissionService.findList(c);
- if(pList!=null){
- for (CompanyPermission cc : pList){
- if(user.getCompanyIdList() == null){
- user.setCompanyIdList(new ArrayList<>());
- }
- user.getCompanyIdList().add(cc.getCompanyId());
- }
- }
+ roles = systemRoleService.findByUserId(user.getId());
+ CompanyPermission c = new CompanyPermission();
+ c.setUserId(user.getId());
+ c.setIsdeleted(Constants.ZERO);
+ List<CompanyPermission> pList = companyPermissionService.findList(c);
+ if(pList!=null){
+ for (CompanyPermission cc : pList){
+ if(user.getCompanyIdList() == null){
+ user.setCompanyIdList(new ArrayList<>());
+ }
+ user.getCompanyIdList().add(cc.getCompanyId());
+ }
+ }
+ permissions = systemPermissionService.findByUserId(user.getId());
}else{
- Company company = companyService.findById(user.getCompanyId());
+ Integer selfCompanyId = user.getCompanyId();
+ Company company = companyService.findById(selfCompanyId);
if(company == null){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝浼佷笟璐﹀彿淇℃伅涓嶆纭紒");
}
user.setCompany(company);
+ user.setShowCompany(company);
+ if(authenticationToken.getUserType() == 1){
+ List<CompanyPermission> pList = companyPermissionService.getUserCompanyPermission(user.getId());
+ //鍔犲叆鑷繁鐨勯粯璁や紒涓�
+ CompanyPermission companyPermission = new CompanyPermission();
+ companyPermission.setUserId(user.getId());
+ companyPermission.setCompanyId(company.getId());
+ companyPermission.setType(Constants.ONE);
+ companyPermission.setId(Constants.ONE);
+ companyPermission.setIsSelfCompany(Constants.ONE);
+ companyPermission.setIsShow(Constants.ONE);
+ companyPermission.setCompanyName(company.getName());
+ pList.add(companyPermission);
+ if(Objects.nonNull(authenticationToken.getCompanyId())){
+ for (CompanyPermission c:pList) {
+ if(Constants.equalsInteger(c.getCompanyId(),authenticationToken.getCompanyId())){
+ c.setIsShow(Constants.ONE);
+ Company showCompany = companyService.findById(authenticationToken.getCompanyId());
+ user.setShowCompany(showCompany);
+ }else{
+ c.setIsShow(Constants.ZERO);
+ }
+ }
+ }
+ if(CollectionUtils.isNotEmpty(pList)) {
+ user.setCompanyPermissionList(pList);
+ }
+ }
+ //濡傛灉鐢ㄦ埛涓庝紒涓氳秴绠¤处鍙风浉鍚� 鎴栬�� 浼佷笟涓婚敭涓庡綋鍓嶅垏鎹㈠悗鐨勪富閿笉鐩稿悓鏃� 缁欒秴绠℃潈闄�
+ if(StringUtils.equals(company.getUsername(),user.getUsername())
+ ||( Objects.nonNull(authenticationToken.getCompanyId()) && !Constants.equalsInteger(company.getId(),authenticationToken.getCompanyId()) )){
+ if(Objects.nonNull(authenticationToken.getCompanyId())){
+ user.setCompanyId(authenticationToken.getCompanyId());
+ }
+ //濡傛灉鏄秴绠★紝
+ SystemRole role = new SystemRole();
+ role.setType(Constants.ONE);
+ role.setDeleted(Boolean.FALSE);
+ roles = systemRoleService.findList(role);
+ SystemPermission p = new SystemPermission();
+ permissions = systemPermissionService.findList(p,user.getType());
+ }else{
+ roles = systemRoleService.findByUserId(user.getId());
+ permissions = systemPermissionService.findByUserId(user.getId());
+ }
}
- LoginUserInfo userInfo = LoginUserInfo.from(user, roles, permissions);
+ SystemRole rt = new SystemRole();
+ rt.setDeleted(Boolean.FALSE);
+ //鏁版嵁閮ㄩ棬鏉冮檺闆嗗悎
+ if(Constants.equalsInteger(user.getType(),Constants.ONE) && Constants.equalsInteger(user.getCompany().getId(),user.getCompanyId())){
+ user.setDepartIdList(null);
+ }else{
+ user.setDepartIdList(systemDataPermissionService.selectHighRole(new SystemDataPermission(),rt,user));
+ }
+
+ LoginUserInfo userInfo = LoginUserInfo.from(user, roles, permissions);
// 楠岃瘉鐢ㄦ埛
return new SimpleAuthenticationInfo(userInfo, user.getPassword(), this.getName());
}
--
Gitblit v1.9.3