Merge remote-tracking branch 'origin/feature/REQ-2046' into feature/20240306
This commit is contained in:
commit
5b1c8513b7
@ -11,6 +11,8 @@ import lombok.NoArgsConstructor;
|
|||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* 经过auth之后,可以得到ContextInfo。
|
* 经过auth之后,可以得到ContextInfo。
|
||||||
@ -56,6 +58,8 @@ public class ContextInfo {
|
|||||||
* 单位类型
|
* 单位类型
|
||||||
*/
|
*/
|
||||||
private Integer ouType;
|
private Integer ouType;
|
||||||
|
|
||||||
|
private List<Integer> ouTypes;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 如果是企业视角,传EntId
|
* 如果是企业视角,传EntId
|
||||||
@ -87,6 +91,8 @@ public class ContextInfo {
|
|||||||
*/
|
*/
|
||||||
private Integer workspaceJoinType;
|
private Integer workspaceJoinType;
|
||||||
|
|
||||||
|
private List<Integer> workspaceJoinTypes;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 模板方法,用来自定义ContextInfo。
|
* 模板方法,用来自定义ContextInfo。
|
||||||
*
|
*
|
||||||
@ -273,4 +279,20 @@ public class ContextInfo {
|
|||||||
public void setWorkspaceJoinType(Integer workspaceJoinType) {
|
public void setWorkspaceJoinType(Integer workspaceJoinType) {
|
||||||
this.workspaceJoinType = workspaceJoinType;
|
this.workspaceJoinType = workspaceJoinType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<Integer> getOuTypes() {
|
||||||
|
return ouTypes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOuTypes(List<Integer> ouTypes) {
|
||||||
|
this.ouTypes = ouTypes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Integer> getWorkspaceJoinTypes() {
|
||||||
|
return workspaceJoinTypes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWorkspaceJoinTypes(List<Integer> workspaceJoinTypes) {
|
||||||
|
this.workspaceJoinTypes = workspaceJoinTypes;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,11 +9,9 @@ import java.util.Map;
|
|||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import jdk.nashorn.internal.ir.Terminal;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
import java.util.Map.Entry;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -452,18 +450,37 @@ public class TerminalInfo {
|
|||||||
return NT_CMS_WEB_ENT_ZB.equals(newTerminalString);
|
return NT_CMS_WEB_ENT_ZB.equals(newTerminalString);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isCMS_WEB_ENT_ZB(Integer workspaceType) {
|
||||||
|
return NT_CMS_WEB_ENT_ZB.equals(newTerminalString)
|
||||||
|
|| (NT_CMS_WEB_GENERAL.equals(newTerminalString) && workspaceType == 1);
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isCMS_WEB_PROJ() {
|
public boolean isCMS_WEB_PROJ() {
|
||||||
return NT_CMS_WEB_PROJ.equals(newTerminalString);
|
return NT_CMS_WEB_PROJ.equals(newTerminalString);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isCMS_WEB_PROJ(Integer workspaceType) {
|
||||||
|
return NT_CMS_WEB_PROJ.equals(newTerminalString)
|
||||||
|
|| (NT_CMS_WEB_GENERAL.equals(newTerminalString) && workspaceType == 2);
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isCMP_APP_ENT_ZB() {
|
public boolean isCMP_APP_ENT_ZB() {
|
||||||
return NT_CMP_APP_ENT_ZB.equals(newTerminalString);
|
return NT_CMP_APP_ENT_ZB.equals(newTerminalString);
|
||||||
}
|
}
|
||||||
|
public boolean isCMP_APP_ENT_ZB(Integer workspaceType) {
|
||||||
|
return NT_CMP_APP_ENT_ZB.equals(newTerminalString)
|
||||||
|
|| (NT_CMP_APP_GENERAL.equals(newTerminalString) && workspaceType == 1);
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isCMP_APP_PROJ() {
|
public boolean isCMP_APP_PROJ() {
|
||||||
return NT_CMP_APP_PROJ.equals(newTerminalString);
|
return NT_CMP_APP_PROJ.equals(newTerminalString);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isCMP_APP_PROJ(Integer workspaceType) {
|
||||||
|
return NT_CMP_APP_PROJ.equals(newTerminalString)
|
||||||
|
|| (NT_CMP_APP_GENERAL.equals(newTerminalString) && workspaceType == 2);
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isCM_APP_CM_LEADER() {
|
public boolean isCM_APP_CM_LEADER() {
|
||||||
return NT_CM_APP_CM_LEADER.equals(newTerminalString);
|
return NT_CM_APP_CM_LEADER.equals(newTerminalString);
|
||||||
}
|
}
|
||||||
@ -701,6 +718,15 @@ public class TerminalInfo {
|
|||||||
return terminalKey;
|
return terminalKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 是否管理端APP - 待细化 现在等同于isAppGeneral **/
|
||||||
|
public boolean isManageApp() {
|
||||||
|
//APP管理端多terminal统一使用NT_CMP_APP_GENERAL 同时兼容老APP terminal
|
||||||
|
if (StrUtil.isBlank(newTerminalString)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return StrUtil.equalsAny(newTerminalString, NT_CM_APP_CM_LEADER, NT_CM_APP_GENERAL, NT_CMP_APP_PROJ, NT_CMP_APP_GENERAL, NT_CMP_APP_ENT_ZB);
|
||||||
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
TerminalInfo tm = new TerminalInfo("proj");
|
TerminalInfo tm = new TerminalInfo("proj");
|
||||||
System.out.println(tm.getRawTerminalString());
|
System.out.println(tm.getRawTerminalString());
|
||||||
|
|||||||
@ -20,10 +20,15 @@ import cn.hutool.core.lang.TypeReference;
|
|||||||
import cn.hutool.core.text.CharSequenceUtil;
|
import cn.hutool.core.text.CharSequenceUtil;
|
||||||
import cn.hutool.http.HttpException;
|
import cn.hutool.http.HttpException;
|
||||||
import cn.hutool.http.HttpRequest;
|
import cn.hutool.http.HttpRequest;
|
||||||
|
import cn.hutool.json.JSONArray;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.Set;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -116,7 +121,7 @@ public class ContextInfoBuilderAspect {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
ContextInfo contextInfo = preBuildContext.value().getDeclaredConstructor().newInstance();
|
ContextInfo contextInfo = preBuildContext.value().getDeclaredConstructor().newInstance();
|
||||||
|
|
||||||
fillContextInfoWithRequestBeforeRemoteAuth(contextInfo, httpRequest);
|
fillContextInfoWithRequestBeforeRemoteAuth(contextInfo, httpRequest);
|
||||||
|
|
||||||
String authResultJson = remoteAuth(httpRequest, contextInfo);
|
String authResultJson = remoteAuth(httpRequest, contextInfo);
|
||||||
@ -142,7 +147,7 @@ public class ContextInfoBuilderAspect {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Object[] parseContextInfoAndReturnArgs(HttpServletRequest request, ProceedingJoinPoint pjp,
|
public Object[] parseContextInfoAndReturnArgs(HttpServletRequest request, ProceedingJoinPoint pjp,
|
||||||
ContextInfo contextInfo) {
|
ContextInfo contextInfo) {
|
||||||
// 把ContextInfo注入到函数的入参中
|
// 把ContextInfo注入到函数的入参中
|
||||||
MethodSignature methodSignature = (MethodSignature) pjp.getSignature();
|
MethodSignature methodSignature = (MethodSignature) pjp.getSignature();
|
||||||
Method method = methodSignature.getMethod();
|
Method method = methodSignature.getMethod();
|
||||||
@ -210,7 +215,7 @@ public class ContextInfoBuilderAspect {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 这个函数基本上都是在本地调试的时候才会走到,如果是apisix网关,不会走这个函数。
|
* 这个函数基本上都是在本地调试的时候才会走到,如果是apisix网关,不会走这个函数。
|
||||||
*
|
*
|
||||||
* @param contextInfo
|
* @param contextInfo
|
||||||
* @param originalRequest
|
* @param originalRequest
|
||||||
* @return
|
* @return
|
||||||
@ -272,14 +277,14 @@ public class ContextInfoBuilderAspect {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 期待着前端上线之后,header都补齐,这些代码可以全都删掉
|
* 期待着前端上线之后,header都补齐,这些代码可以全都删掉
|
||||||
*
|
*
|
||||||
* @param contextInfo
|
* @param contextInfo
|
||||||
* @param originalRequest
|
* @param originalRequest
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
private String buildLegacyGuessMissedReqStringForRemoteAuth(ContextInfo contextInfo,
|
private String buildLegacyGuessMissedReqStringForRemoteAuth(ContextInfo contextInfo,
|
||||||
HttpServletRequest originalRequest) {
|
HttpServletRequest originalRequest) {
|
||||||
LegacyGuessMissedReq req = new LegacyGuessMissedReq();
|
LegacyGuessMissedReq req = new LegacyGuessMissedReq();
|
||||||
req.setOriginalUrl(originalRequest.getRequestURI());
|
req.setOriginalUrl(originalRequest.getRequestURI());
|
||||||
req.setHeaderOuId(contextInfo.getOuId());
|
req.setHeaderOuId(contextInfo.getOuId());
|
||||||
@ -304,39 +309,45 @@ public class ContextInfoBuilderAspect {
|
|||||||
BeanUtil.fillBeanWithMap(userinfoMap, userInfo, false);
|
BeanUtil.fillBeanWithMap(userinfoMap, userInfo, false);
|
||||||
|
|
||||||
contextInfo.setUserInfo(userInfo);
|
contextInfo.setUserInfo(userInfo);
|
||||||
try {
|
|
||||||
if(userinfoMap.containsKey("ouType"))
|
|
||||||
contextInfo.setOuType(Integer.parseInt(userinfoMap.get("ouType").toString()));
|
|
||||||
} catch (Throwable t) {
|
|
||||||
log.warn("fill ouType error, user identityId=" + userInfo.getIdentityId());
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
contextInfo.setWorkspaceType(Integer.parseInt(userinfoMap.get("workspaceType").toString()));
|
|
||||||
}catch (Throwable t) {
|
|
||||||
log.warn("fill workspaceType error, user identityId=" + userInfo.getIdentityId());
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
contextInfo.setWorkspaceJoinType(Integer.parseInt(userinfoMap.get("workspaceJoinType").toString()));
|
|
||||||
}catch (Throwable t) {
|
|
||||||
log.warn("fill workspaceJoinType error, user identityId=" + userInfo.getIdentityId());
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
fillOUWorkspaceType(contextInfo, userinfoMap);
|
||||||
fillLegacyGuess(contextInfo, userinfoMap);
|
fillLegacyGuess(contextInfo, userinfoMap);
|
||||||
contextInfo.getSystemAndDeviceInfo().setLoginDevice(contextInfo.getTerminalInfo().getSimpleTerminal());
|
contextInfo.getSystemAndDeviceInfo().setLoginDevice(contextInfo.getTerminalInfo().getSimpleTerminal());
|
||||||
// loginDevice 字段已经被消费了所以这里需要新创建一个字段 用来设置登录端
|
// loginDevice 字段已经被消费了所以这里需要新创建一个字段 用来设置登录端
|
||||||
contextInfo.getSystemAndDeviceInfo().setDevice((String) userinfoMap.get("loginDevice"));
|
contextInfo.getSystemAndDeviceInfo().setDevice((String) userinfoMap.get("loginDevice"));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.warn("fill legacy guess error for user identityId=" + userInfo.getIdentityId(), e);
|
log.warn("fill contextInfo error for user identityId=" + userInfo.getIdentityId(), e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
contextInfo.setUserInfoMap(new UserInfoMap(userinfoMap));
|
contextInfo.setUserInfoMap(new UserInfoMap(userinfoMap));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void fillOUWorkspaceType(ContextInfo contextInfo, Map<String, Object> userinfoMap) {
|
||||||
|
try {
|
||||||
|
contextInfo.setWorkspaceType(Integer.parseInt(userinfoMap.getOrDefault("workspaceType", "0").toString()));
|
||||||
|
//ouType和ouTypes
|
||||||
|
contextInfo.setOuType(Integer.parseInt(userinfoMap.getOrDefault("ouType", "0").toString()));
|
||||||
|
Object ouTypes = userinfoMap.get("ouTypes");
|
||||||
|
if (ouTypes instanceof JSONArray) {
|
||||||
|
contextInfo.setOuTypes(((JSONArray) ouTypes).toList(Integer.class));
|
||||||
|
}
|
||||||
|
//workspaceJoinType和 workspaceJoinTypes;
|
||||||
|
contextInfo.setWorkspaceJoinType(Integer.parseInt(userinfoMap.getOrDefault("workspaceJoinType", "0").toString()));
|
||||||
|
Object workspaceTypes = userinfoMap.get("workspaceJoinTypes");
|
||||||
|
if (workspaceTypes instanceof JSONArray) {
|
||||||
|
contextInfo.setWorkspaceJoinTypes(((JSONArray) workspaceTypes).toList(Integer.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Throwable t) {
|
||||||
|
log.warn("fill ouType/workspace join type error", t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 期待着前端上线之后,header都补齐,这些代码可以全都删掉
|
* 期待着前端上线之后,header都补齐,这些代码可以全都删掉
|
||||||
*
|
*
|
||||||
* @param contextInfo
|
* @param contextInfo
|
||||||
* @param map 整个userInfoMap,里面放着一个legacy guess的结果
|
* @param map 整个userInfoMap,里面放着一个legacy guess的结果
|
||||||
*/
|
*/
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user