From 50fb58286ed3b718c39a97e0987ee7561a295651 Mon Sep 17 00:00:00 2001 From: k94314517 <8417338+k94314517@user.noreply.gitee.com> Date: 星期五, 04 七月 2025 17:56:41 +0800 Subject: [PATCH] git ch --- server/service/src/main/java/com/doumee/config/shiro/ShiroRealm.java | 98 ++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 81 insertions(+), 17 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 10bcf6d..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()); - LoginUserInfo userInfo = LoginUserInfo.from(user, roles, permissions); - 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()); - } - } + 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()); }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()); + } } + 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