From 7de71dabf01520ce61837396fc56519116fab55e Mon Sep 17 00:00:00 2001 From: zhansihu Date: Wed, 10 Jan 2024 14:02:50 +0800 Subject: [PATCH 1/8] =?UTF-8?q?feat(context):=20context=E5=A2=9E=E5=8A=A0o?= =?UTF-8?q?uTypes=E5=92=8CworkspaceJoinTypes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/auth/domain/ContextInfo.java | 22 +++++++ .../framework/auth/domain/TerminalInfo.java | 3 - .../service/ContextInfoBuilderAspect.java | 59 +++++++++++-------- 3 files changed, 57 insertions(+), 27 deletions(-) diff --git a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/ContextInfo.java b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/ContextInfo.java index 6b7e555..eaefa54 100644 --- a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/ContextInfo.java +++ b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/ContextInfo.java @@ -11,6 +11,8 @@ import lombok.NoArgsConstructor; import lombok.Setter; import lombok.extern.slf4j.Slf4j; +import java.util.List; + /** * * 经过auth之后,可以得到ContextInfo。 @@ -56,6 +58,8 @@ public class ContextInfo { * 单位类型 */ private Integer ouType; + + private List ouTypes; /** * 如果是企业视角,传EntId @@ -87,6 +91,8 @@ public class ContextInfo { */ private Integer workspaceJoinType; + private List workspaceJoinTypes; + /** * 模板方法,用来自定义ContextInfo。 * @@ -273,4 +279,20 @@ public class ContextInfo { public void setWorkspaceJoinType(Integer workspaceJoinType) { this.workspaceJoinType = workspaceJoinType; } + + public List getOuTypes() { + return ouTypes; + } + + public void setOuTypes(List ouTypes) { + this.ouTypes = ouTypes; + } + + public List getWorkspaceJoinTypes() { + return workspaceJoinTypes; + } + + public void setWorkspaceJoinTypes(List workspaceJoinTypes) { + this.workspaceJoinTypes = workspaceJoinTypes; + } } diff --git a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java index 15665a8..5065122 100644 --- a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java +++ b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java @@ -9,11 +9,8 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import jdk.nashorn.internal.ir.Terminal; import org.springframework.util.StringUtils; -import java.util.*; -import java.util.Map.Entry; /** diff --git a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/service/ContextInfoBuilderAspect.java b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/service/ContextInfoBuilderAspect.java index 277596a..ffee172 100644 --- a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/service/ContextInfoBuilderAspect.java +++ b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/service/ContextInfoBuilderAspect.java @@ -20,10 +20,15 @@ import cn.hutool.core.lang.TypeReference; import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.http.HttpException; import cn.hutool.http.HttpRequest; +import cn.hutool.json.JSONArray; import cn.hutool.json.JSONUtil; import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Set; import javax.servlet.http.HttpServletRequest; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -116,7 +121,7 @@ public class ContextInfoBuilderAspect { try { ContextInfo contextInfo = preBuildContext.value().getDeclaredConstructor().newInstance(); - + fillContextInfoWithRequestBeforeRemoteAuth(contextInfo, httpRequest); String authResultJson = remoteAuth(httpRequest, contextInfo); @@ -142,7 +147,7 @@ public class ContextInfoBuilderAspect { } public Object[] parseContextInfoAndReturnArgs(HttpServletRequest request, ProceedingJoinPoint pjp, - ContextInfo contextInfo) { + ContextInfo contextInfo) { // 把ContextInfo注入到函数的入参中 MethodSignature methodSignature = (MethodSignature) pjp.getSignature(); Method method = methodSignature.getMethod(); @@ -210,7 +215,7 @@ public class ContextInfoBuilderAspect { /** * 这个函数基本上都是在本地调试的时候才会走到,如果是apisix网关,不会走这个函数。 - * + * * @param contextInfo * @param originalRequest * @return @@ -272,14 +277,14 @@ public class ContextInfoBuilderAspect { /** * 期待着前端上线之后,header都补齐,这些代码可以全都删掉 - * + * * @param contextInfo * @param originalRequest * @return */ @Deprecated private String buildLegacyGuessMissedReqStringForRemoteAuth(ContextInfo contextInfo, - HttpServletRequest originalRequest) { + HttpServletRequest originalRequest) { LegacyGuessMissedReq req = new LegacyGuessMissedReq(); req.setOriginalUrl(originalRequest.getRequestURI()); req.setHeaderOuId(contextInfo.getOuId()); @@ -304,39 +309,45 @@ public class ContextInfoBuilderAspect { BeanUtil.fillBeanWithMap(userinfoMap, userInfo, false); 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 { + fillOUWorkspaceType(contextInfo, userinfoMap); fillLegacyGuess(contextInfo, userinfoMap); contextInfo.getSystemAndDeviceInfo().setLoginDevice(contextInfo.getTerminalInfo().getSimpleTerminal()); // loginDevice 字段已经被消费了所以这里需要新创建一个字段 用来设置登录端 contextInfo.getSystemAndDeviceInfo().setDevice((String) userinfoMap.get("loginDevice")); } 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)); } + private void fillOUWorkspaceType(ContextInfo contextInfo, Map userinfoMap) { + try { + //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.setWorkspaceType(Integer.parseInt(userinfoMap.getOrDefault("workspaceType", "0").toString())); + Object workspaceTypes = userinfoMap.get("workspaceTypes"); + if (workspaceTypes instanceof JSONArray) { + contextInfo.setWorkspaceJoinTypes(((JSONArray) workspaceTypes).toList(Integer.class)); + } + contextInfo.setWorkspaceJoinType(Integer.parseInt(userinfoMap.get("workspaceJoinType").toString())); + + } catch (Throwable t) { + log.warn("fill ouType/workspace join type error", t); + } + } + /** * 期待着前端上线之后,header都补齐,这些代码可以全都删掉 - * + * * @param contextInfo * @param map 整个userInfoMap,里面放着一个legacy guess的结果 */ From feb64386892e39792ae7b41dfc899822b2e8d9f0 Mon Sep 17 00:00:00 2001 From: zhansihu Date: Thu, 11 Jan 2024 17:09:00 +0800 Subject: [PATCH 2/8] =?UTF-8?q?fix(context):=20=E5=85=BC=E5=AE=B9NPE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/auth/service/ContextInfoBuilderAspect.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/service/ContextInfoBuilderAspect.java b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/service/ContextInfoBuilderAspect.java index ffee172..9d6e377 100644 --- a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/service/ContextInfoBuilderAspect.java +++ b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/service/ContextInfoBuilderAspect.java @@ -326,6 +326,7 @@ public class ContextInfoBuilderAspect { private void fillOUWorkspaceType(ContextInfo contextInfo, Map 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"); @@ -333,12 +334,11 @@ public class ContextInfoBuilderAspect { contextInfo.setOuTypes(((JSONArray) ouTypes).toList(Integer.class)); } //workspaceJoinType和 workspaceJoinTypes; - contextInfo.setWorkspaceType(Integer.parseInt(userinfoMap.getOrDefault("workspaceType", "0").toString())); - Object workspaceTypes = userinfoMap.get("workspaceTypes"); + 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)); } - contextInfo.setWorkspaceJoinType(Integer.parseInt(userinfoMap.get("workspaceJoinType").toString())); } catch (Throwable t) { log.warn("fill ouType/workspace join type error", t); From ec661aa9e4a89203a283158f954700217f45212a Mon Sep 17 00:00:00 2001 From: zhansihu Date: Wed, 24 Jan 2024 20:49:56 +0800 Subject: [PATCH 3/8] =?UTF-8?q?feat(2046-terminal):=20=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E7=AB=AFAPP=E5=88=A4=E6=96=AD=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/axzo/framework/auth/domain/TerminalInfo.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java index 5065122..d31241c 100644 --- a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java +++ b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java @@ -698,6 +698,12 @@ public class TerminalInfo { return terminalKey; } + /** 是否管理端APP - 待细化 现在等同于isAppGeneral **/ + public boolean isManageApp() { + //TODO:@Zhan 待细化具体逻辑 + return this.isAppGeneral(); + } + public static void main(String[] args) { TerminalInfo tm = new TerminalInfo("proj"); System.out.println(tm.getRawTerminalString()); From 2b6d80cd5a1ebfef4a9936c0d73ccc282732642e Mon Sep 17 00:00:00 2001 From: zhansihu Date: Thu, 25 Jan 2024 17:25:43 +0800 Subject: [PATCH 4/8] =?UTF-8?q?feat(2046-terminal):=20=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E7=AB=AFAPP=E5=88=A4=E6=96=AD=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/framework/auth/domain/TerminalInfo.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java index d31241c..d88921c 100644 --- a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java +++ b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java @@ -9,6 +9,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; +import cn.hutool.core.util.StrUtil; import org.springframework.util.StringUtils; @@ -147,6 +148,8 @@ public class TerminalInfo { */ public static final String NT_MP_WX_GENERAL = "NT_MP_WX_GENERAL"; + public static final String + static { aliasMap.put(NT_MP_WX_GENERAL, NT_MP_WX_GENERAL); } @@ -700,8 +703,11 @@ public class TerminalInfo { /** 是否管理端APP - 待细化 现在等同于isAppGeneral **/ public boolean isManageApp() { - //TODO:@Zhan 待细化具体逻辑 - return this.isAppGeneral(); + //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); } public static void main(String[] args) { From 8196c0b3898f289b4d7e332900a07cc813943c93 Mon Sep 17 00:00:00 2001 From: zhansihu Date: Thu, 25 Jan 2024 17:30:55 +0800 Subject: [PATCH 5/8] fix(2046-terminal): remove --- .../main/java/cn/axzo/framework/auth/domain/TerminalInfo.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java index d88921c..85a7b01 100644 --- a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java +++ b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java @@ -148,8 +148,6 @@ public class TerminalInfo { */ public static final String NT_MP_WX_GENERAL = "NT_MP_WX_GENERAL"; - public static final String - static { aliasMap.put(NT_MP_WX_GENERAL, NT_MP_WX_GENERAL); } From 29466759bfaa6a13ad424e103cc342a20c5be6c3 Mon Sep 17 00:00:00 2001 From: zhansihu Date: Thu, 25 Jan 2024 17:45:18 +0800 Subject: [PATCH 6/8] =?UTF-8?q?fix(2046-terminal):=20=E8=BF=BD=E5=8A=A0?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E8=80=81terminal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/axzo/framework/auth/domain/TerminalInfo.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java index 85a7b01..6c93ddb 100644 --- a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java +++ b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java @@ -705,7 +705,7 @@ public class TerminalInfo { 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); + 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) { From 30eea2ab2bf11926776a7d3a190cbee378ea64b0 Mon Sep 17 00:00:00 2001 From: zhansihu Date: Sun, 4 Feb 2024 12:05:24 +0800 Subject: [PATCH 7/8] =?UTF-8?q?refactor(2046-terminal):=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=85=BC=E5=AE=B9=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/axzo/framework/auth/domain/TerminalInfo.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java index 6c93ddb..50997ab 100644 --- a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java +++ b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java @@ -457,11 +457,20 @@ public class TerminalInfo { public boolean isCMP_APP_ENT_ZB() { 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() { 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() { return NT_CM_APP_CM_LEADER.equals(newTerminalString); } From 01f3bc9aea0ededa3f17df6ac493142699746c21 Mon Sep 17 00:00:00 2001 From: zhansihu Date: Sun, 4 Feb 2024 17:25:52 +0800 Subject: [PATCH 8/8] =?UTF-8?q?refactor(2046-terminal):=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=85=BC=E5=AE=B9CMS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/framework/auth/domain/TerminalInfo.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java index 50997ab..cbc6679 100644 --- a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java +++ b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/TerminalInfo.java @@ -450,10 +450,20 @@ public class TerminalInfo { 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() { 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() { return NT_CMP_APP_ENT_ZB.equals(newTerminalString); }