From 352d337c355f60909d9dd24bd613c12ea92f8015 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 14 九月 2023 17:47:50 +0800
Subject: [PATCH] 组织bug
---
server/src/main/java/doumeemes/config/shiro/ShiroCredentialsMatcher.java | 3 +
server/src/main/java/doumeemes/service/ext/impl/DepartmentExtServiceImpl.java | 7 ++
server/src/main/java/doumeemes/config/shiro/ShiroToken.java | 26 ++++++++
h5_standard/src/views/tabPage/my.vue | 1
server/src/main/java/doumeemes/config/shiro/ShiroRealm.java | 138 ++++++++++++++++++++++++----------------------
5 files changed, 109 insertions(+), 66 deletions(-)
diff --git a/h5_standard/src/views/tabPage/my.vue b/h5_standard/src/views/tabPage/my.vue
index 9d8007c..87d9d44 100644
--- a/h5_standard/src/views/tabPage/my.vue
+++ b/h5_standard/src/views/tabPage/my.vue
@@ -79,6 +79,7 @@
if (res.code === 200) {
// window.parent.postMessage('闃垮悍', '*')
// let href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx6ea339a336f26380&redirect_url=https://www.mes.red/h5/redirect.html&response_type=code&scope=snsapi_base&state=#wechat_redirect'
+ // let href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx6ea339a336f26380&redirect_url=https://www.mes.red/lingyangh5/redirect.html&response_type=code&scope=snsapi_base&state=#wechat_redirect'
// let href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx6ea339a336f26380&redirect_url=https://dmtest.ahapp.net/doumeeplant_h5/redirect.html&response_type=code&scope=snsapi_base&state=#wechat_redirect'
let href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx6ea339a336f26380&redirect_url=https://lingyang.mes.show:1801/h5/redirect.html&response_type=code&scope=snsapi_base&state=#wechat_redirect'
window.open(href)
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroCredentialsMatcher.java b/server/src/main/java/doumeemes/config/shiro/ShiroCredentialsMatcher.java
index a9f8563..606be09 100644
--- a/server/src/main/java/doumeemes/config/shiro/ShiroCredentialsMatcher.java
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroCredentialsMatcher.java
@@ -25,6 +25,9 @@
@Override
public boolean doCredentialsMatch(AuthenticationToken token, AuthenticationInfo info) {
ShiroToken usernamePasswordToken = (ShiroToken) token;
+ if(((ShiroToken) token).getUpdateFlag() ==1){
+ return Boolean.TRUE;
+ }
SystemUser queryUserDto = new SystemUser();
queryUserDto.setUsername(usernamePasswordToken.getUsername());
queryUserDto.setDeleted(Boolean.FALSE);
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroRealm.java b/server/src/main/java/doumeemes/config/shiro/ShiroRealm.java
index 6c0da35..d87601b 100644
--- a/server/src/main/java/doumeemes/config/shiro/ShiroRealm.java
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroRealm.java
@@ -90,76 +90,82 @@
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
// 鑾峰彇鐢ㄦ埛鍚�
ShiroToken authenticationToken =(ShiroToken) token;
- String username = authenticationToken.getPrincipal().toString();
- boolean isDdLogin = authenticationToken.getDdLogin();
- // 鏍规嵁鐢ㄦ埛鍚嶆煡璇㈢敤鎴峰璞�
- SystemUser queryDto = new SystemUser();
- queryDto.setUsername(username);
- queryDto.setDeleted(Boolean.FALSE);
- SystemUser user = systemUserService.findOne(queryDto);
- if (user == null) {
- return null;
- }
- SystemRole role = new SystemRole();
- SystemPermission per = new SystemPermission();
- DepartmentExtListVO rootDepart = null,comDepart=null, depart = null;
- List<Integer> dpList = null;
- CompanyExtListVO com = null;
- CompanyUserExtListVO cu =null;
- if(Constants.equalsInteger(user.getType(),Constants.PlatType.admin)){
- //濡傛灉鏄钩鍙扮敤鎴�
- role.setType(Constants.ROLETYPE.plat);
- per.setType(Constants.PlatType.admin);
+ if(authenticationToken .getUpdateFlag() == 1){
+ //濡傛灉鏄洿鏂皊ession
+ return new SimpleAuthenticationInfo(authenticationToken.getUpdateUser(), authenticationToken.getPassword(), this.getName());
}else{
- if(authenticationToken.getCompanyId() == null){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇ヨ处鎴峰垹闄わ紒");
+ String username = authenticationToken.getPrincipal().toString();
+ boolean isDdLogin = authenticationToken.getDdLogin();
+ // 鏍规嵁鐢ㄦ埛鍚嶆煡璇㈢敤鎴峰璞�
+ SystemUser queryDto = new SystemUser();
+ queryDto.setUsername(username);
+ queryDto.setDeleted(Boolean.FALSE);
+ SystemUser user = systemUserService.findOne(queryDto);
+ if (user == null) {
+ return null;
}
- com = companyExtService.getModelById(authenticationToken.getCompanyId());
- if(com == null || Constants.equalsInteger( com.getDeleted(),Constants.ONE)){
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヨ处鎴峰垹闄わ紒璇疯仈绯荤鐞嗗憳");
- }
- if(Constants.equalsInteger( com.getStatus(),Constants.ZERO) ){
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヤ紒涓氬凡绂佺敤锛�");
- }
- if(com.getOepnValidDate() != null && com.getOepnValidDate().before(new Date())){
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヤ紒涓氬凡杩囦娇鐢ㄦ湁鏁堟湡锛�");
- }
- //濡傛灉鏄紒涓氱敤鎴�
- QueryCompanyUserExtDTO c =new QueryCompanyUserExtDTO();
- c.setUserId(user.getId());
- c.setDeleted(Constants.ZERO);
- c.setCompanyId(authenticationToken.getCompanyId());
- cu = companyUserExtService.selectOne(c);
- if(cu == null){
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヤ紒涓氱敤鎴蜂笉瀛樺湪锛�");
- }
- if(Constants.equalsInteger(cu.getStatus(),Constants.ONE)){
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヤ紒涓氱敤鎴峰凡绂佺敤锛�");
- }
- rootDepart = departmentExtService.getModelById(c.getCompanyId(),cu.getRootDepartId());
- comDepart = departmentExtService.getModelById(c.getCompanyId(),cu.getComDepartId());
- depart = departmentExtService.getModelById(c.getCompanyId(),cu.getDepartmentId());
- if(rootDepart == null || comDepart == null || depart==null){
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヤ紒涓氱敤鎴疯处鎴峰紓甯革紒");
- }
- role.setCompanyId(authenticationToken.getCompanyId());
- role.setType(Constants.ROLETYPE.com);
- per.setType(Constants.PlatType.company);
- per.setRoleType(Constants.ROLETYPE.com);
- per.setCompanyId(authenticationToken.getCompanyId());
- SystemRole rt = new SystemRole();
- rt.setType(Constants.ROLETYPE.com);
- rt.setCompanyId(c.getCompanyId());
- //鏁版嵁閮ㄩ棬鏉冮檺闆嗗悎
- dpList =systemDataPermissionService.selectHighRole(new SystemDataPermission(),rt,user,depart);
+ SystemRole role = new SystemRole();
+ SystemPermission per = new SystemPermission();
+ DepartmentExtListVO rootDepart = null,comDepart=null, depart = null;
+ List<Integer> dpList = null;
+ CompanyExtListVO com = null;
+ CompanyUserExtListVO cu =null;
+ if(Constants.equalsInteger(user.getType(),Constants.PlatType.admin)){
+ //濡傛灉鏄钩鍙扮敤鎴�
+ role.setType(Constants.ROLETYPE.plat);
+ per.setType(Constants.PlatType.admin);
+ }else{
+ if(authenticationToken.getCompanyId() == null){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇ヨ处鎴峰垹闄わ紒");
+ }
+ com = companyExtService.getModelById(authenticationToken.getCompanyId());
+ if(com == null || Constants.equalsInteger( com.getDeleted(),Constants.ONE)){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヨ处鎴峰垹闄わ紒璇疯仈绯荤鐞嗗憳");
+ }
+ if(Constants.equalsInteger( com.getStatus(),Constants.ZERO) ){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヤ紒涓氬凡绂佺敤锛�");
+ }
+ if(com.getOepnValidDate() != null && com.getOepnValidDate().before(new Date())){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヤ紒涓氬凡杩囦娇鐢ㄦ湁鏁堟湡锛�");
+ }
+ //濡傛灉鏄紒涓氱敤鎴�
+ QueryCompanyUserExtDTO c =new QueryCompanyUserExtDTO();
+ c.setUserId(user.getId());
+ c.setDeleted(Constants.ZERO);
+ c.setCompanyId(authenticationToken.getCompanyId());
+ cu = companyUserExtService.selectOne(c);
+ if(cu == null){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヤ紒涓氱敤鎴蜂笉瀛樺湪锛�");
+ }
+ if(Constants.equalsInteger(cu.getStatus(),Constants.ONE)){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヤ紒涓氱敤鎴峰凡绂佺敤锛�");
+ }
+ rootDepart = departmentExtService.getModelById(c.getCompanyId(),cu.getRootDepartId());
+ comDepart = departmentExtService.getModelById(c.getCompanyId(),cu.getComDepartId());
+ depart = departmentExtService.getModelById(c.getCompanyId(),cu.getDepartmentId());
+ if(rootDepart == null || comDepart == null || depart==null){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヤ紒涓氱敤鎴疯处鎴峰紓甯革紒");
+ }
+ role.setCompanyId(authenticationToken.getCompanyId());
+ role.setType(Constants.ROLETYPE.com);
+ per.setType(Constants.PlatType.company);
+ per.setRoleType(Constants.ROLETYPE.com);
+ per.setCompanyId(authenticationToken.getCompanyId());
+ SystemRole rt = new SystemRole();
+ rt.setType(Constants.ROLETYPE.com);
+ rt.setCompanyId(c.getCompanyId());
+ //鏁版嵁閮ㄩ棬鏉冮檺闆嗗悎
+ dpList =systemDataPermissionService.selectHighRole(new SystemDataPermission(),rt,user,depart);
+ }
+ // 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅
+ List<SystemRole> roles = systemRoleService.findByUserModel(user.getId(),role);
+ List<SystemPermission> permissions = systemPermissionService.findByUserModel(user.getId(),per);
+ LoginUserInfo userInfo = LoginUserInfo.from(user, roles, permissions,com,rootDepart,comDepart,depart,dpList,cu);
+ // 楠岃瘉鐢ㄦ埛
+ return new SimpleAuthenticationInfo(userInfo, user.getPassword(), this.getName());
}
- // 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅
- List<SystemRole> roles = systemRoleService.findByUserModel(user.getId(),role);
- List<SystemPermission> permissions = systemPermissionService.findByUserModel(user.getId(),per);
- LoginUserInfo userInfo = LoginUserInfo.from(user, roles, permissions,com,rootDepart,comDepart,depart,dpList,cu);
- // 楠岃瘉鐢ㄦ埛
- return new SimpleAuthenticationInfo(userInfo, user.getPassword(), this.getName());
+
}
}
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroToken.java b/server/src/main/java/doumeemes/config/shiro/ShiroToken.java
index ff90ee0..14b3889 100644
--- a/server/src/main/java/doumeemes/config/shiro/ShiroToken.java
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroToken.java
@@ -1,5 +1,6 @@
package doumeemes.config.shiro;
+import doumeemes.core.model.LoginUserInfo;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.springframework.stereotype.Component;
@@ -17,6 +18,9 @@
Integer companyId;
Boolean isDdLogin;
Boolean isWxLogin;
+ LoginUserInfo updateUser;
+
+ int updateFlag;
public ShiroToken() {
}
@@ -25,6 +29,12 @@
this.companyId = companyId;
this.isDdLogin = isDdLogin;
this.isWxLogin = isWxLogin;
+ }
+ public ShiroToken(LoginUserInfo user,int updateFlag) {
+ super(user.getUsername(), "", false, (String)null);
+ this.updateUser = user;
+ this.updateFlag = updateFlag;
+ this.isDdLogin = true;
}
public Boolean getDdLogin() {
@@ -51,4 +61,20 @@
public void setCompanyId(Integer companyId) {
this.companyId = companyId;
}
+
+ public LoginUserInfo getUpdateUser() {
+ return updateUser;
+ }
+
+ public void setUpdateUser(LoginUserInfo updateUser) {
+ this.updateUser = updateUser;
+ }
+
+ public int getUpdateFlag() {
+ return updateFlag;
+ }
+
+ public void setUpdateFlag(int updateFlag) {
+ this.updateFlag = updateFlag;
+ }
}
diff --git a/server/src/main/java/doumeemes/service/ext/impl/DepartmentExtServiceImpl.java b/server/src/main/java/doumeemes/service/ext/impl/DepartmentExtServiceImpl.java
index c92dcba..a766d25 100644
--- a/server/src/main/java/doumeemes/service/ext/impl/DepartmentExtServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/ext/impl/DepartmentExtServiceImpl.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
+import doumeemes.config.shiro.ShiroToken;
import doumeemes.core.constants.ResponseStatus;
import doumeemes.core.exception.BusinessException;
import doumeemes.core.model.LoginUserInfo;
@@ -30,6 +31,7 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.subject.Subject;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
@@ -294,6 +296,11 @@
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紒鍙兘鍒囨崲鍒板叕鍙哥骇閮ㄩ棬锛�");
}
user.setCurComDepartment(d);
+ // 鏍¢獙鐢ㄦ埛鍚嶅拰瀵嗙爜
+ Subject subject = SecurityUtils.getSubject();
+ // 閽夐拤鐧诲綍
+ ShiroToken token = new ShiroToken(user.getId(),user.getUsername(), null,true,false);
+ subject.login(token);
}
}
--
Gitblit v1.9.3