From 5506edbe54883b31db3cc8e4a1d9d0795a18a3c9 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期五, 27 十二月 2024 14:37:54 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/2.0.1' into 2.0.1 --- server/service/src/main/java/com/doumee/config/shiro/ShiroRealm.java | 75 +++++++++++++++++++++++++++++-------- 1 files changed, 59 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 111f58a..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,6 +4,8 @@ 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; @@ -16,6 +18,7 @@ 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; @@ -31,6 +34,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Objects; /** * 鑷畾涔塕ealm锛屽鐞嗚璇佸拰鏉冮檺 @@ -60,6 +64,7 @@ @Lazy @Autowired private SystemPermissionService systemPermissionService; + /** * 鏉冮檺澶勭悊 @@ -109,26 +114,60 @@ // 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅 if(authenticationToken.getUserType() == 0){ 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()); + 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); - if(StringUtils.equals(company.getUsername(),user.getUsername())){ + 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); @@ -145,7 +184,11 @@ SystemRole rt = new SystemRole(); rt.setDeleted(Boolean.FALSE); //鏁版嵁閮ㄩ棬鏉冮檺闆嗗悎 - user.setDepartIdList(systemDataPermissionService.selectHighRole(new SystemDataPermission(),rt,user)); + 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); // 楠岃瘉鐢ㄦ埛 -- Gitblit v1.9.3