From 1d01a34cdf842229b36a6b90773992cfe840897b Mon Sep 17 00:00:00 2001 From: TanJ Date: Thu, 30 Mar 2023 14:47:29 +0800 Subject: [PATCH] =?UTF-8?q?Context=20info=E6=B7=BB=E5=8A=A0=E4=B8=A4?= =?UTF-8?q?=E4=B8=AA=E9=BB=98=E8=AE=A4=E7=9A=84=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/annotation/PreBuildContext.java | 4 +++ .../contextvalidate/ContextInfoHandler.java | 13 +++++++- .../domain/contextvalidate/NonWorkspace.java | 31 +++++++++++++++++++ .../contextvalidate/ValidateVerify.java | 25 +++++++++++++++ .../domain/contextvalidate/VerifyContext.java | 18 ----------- .../service/ContextInfoBuilderAspect.java | 5 ++- 6 files changed, 76 insertions(+), 20 deletions(-) create mode 100644 axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/contextvalidate/NonWorkspace.java create mode 100644 axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/contextvalidate/ValidateVerify.java delete mode 100644 axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/contextvalidate/VerifyContext.java diff --git a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/annotation/PreBuildContext.java b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/annotation/PreBuildContext.java index 41bad3f..fb8ff14 100644 --- a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/annotation/PreBuildContext.java +++ b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/annotation/PreBuildContext.java @@ -15,5 +15,9 @@ import cn.axzo.framework.auth.domain.contextvalidate.ContextInfoHandler; public @interface PreBuildContext { Class value() default ContextInfo.class; + /** + * 针对ContextInfo进行一些定制化处理,会按传入的顺序执行 + * @return + */ Class[] filter() default {}; } diff --git a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/contextvalidate/ContextInfoHandler.java b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/contextvalidate/ContextInfoHandler.java index 41b7f23..38311ee 100644 --- a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/contextvalidate/ContextInfoHandler.java +++ b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/contextvalidate/ContextInfoHandler.java @@ -8,5 +8,16 @@ import cn.axzo.framework.auth.domain.ContextInfo; */ public interface ContextInfoHandler { - void handler(ContextInfo contextInfo); + /** + * + * @param contextInfo + * @return + * + * ***一般来说返回null就行, 若返回了非null.则会阻断业务代码运行,直接返回对应的参数给到前端 *** + *
+ * ***谨慎返回*** + * + *
+ */ + Object handler(ContextInfo contextInfo); } diff --git a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/contextvalidate/NonWorkspace.java b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/contextvalidate/NonWorkspace.java new file mode 100644 index 0000000..bccf18c --- /dev/null +++ b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/contextvalidate/NonWorkspace.java @@ -0,0 +1,31 @@ +package cn.axzo.framework.auth.domain.contextvalidate; + +import cn.axzo.framework.auth.domain.ContextInfo; +import cn.azxo.framework.common.model.CommonResponse; + +import java.lang.reflect.InvocationTargetException; + +/** + * 某些接口必须要这两个参数,校验这两个参数只要有一个字段为0或者null,则不执行业务逻辑 + * @author tanjie@axzo.cn + * @date 2023/3/29 11:33 + */ +public class NonWorkspace implements ContextInfoHandler{ + @Override + public Object handler(ContextInfo contextInfo) { + if (null != contextInfo + && (isZero(contextInfo.getOuId()) || isZero(contextInfo.getWorkspaceId()) )) { + return CommonResponse.success(); + } + return null; + } + + private boolean isZero(Long number) { + if(number == null) + return true; + if(number == 0L) + return true; + return false; + } + +} diff --git a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/contextvalidate/ValidateVerify.java b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/contextvalidate/ValidateVerify.java new file mode 100644 index 0000000..0881b1e --- /dev/null +++ b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/contextvalidate/ValidateVerify.java @@ -0,0 +1,25 @@ +package cn.axzo.framework.auth.domain.contextvalidate; + +import cn.axzo.framework.auth.AuthException; +import cn.axzo.framework.auth.domain.ContextInfo; +import cn.axzo.framework.auth.domain.UserInfo; +import cn.axzo.framework.auth.enums.VerifyStatusEnum; +import cn.hutool.core.lang.Assert; + +/** + * 实名校验 + * @author tanjie@axzo.cn + * @date 2023/3/29 11:12 + */ +public class ValidateVerify implements ContextInfoHandler{ + @Override + public Object handler(ContextInfo contextInfo) { + Assert.isTrue((null != contextInfo && null != contextInfo.getUserInfo() )&& VerifyStatusEnum.VERIFY_SUCCESS.equals(contextInfo.getUserInfo().getVerifyStatus()) + , () -> new AuthException("该功能需要实名认证之后才可使用") + ); + + return null; + } + + +} diff --git a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/contextvalidate/VerifyContext.java b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/contextvalidate/VerifyContext.java deleted file mode 100644 index 7ee3910..0000000 --- a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/contextvalidate/VerifyContext.java +++ /dev/null @@ -1,18 +0,0 @@ -package cn.axzo.framework.auth.domain.contextvalidate; - -import cn.axzo.framework.auth.AuthException; -import cn.axzo.framework.auth.domain.ContextInfo; - -/** - * @author tanjie@axzo.cn - * @date 2023/3/29 11:12 - */ -public class VerifyContext implements ContextInfoHandler{ - @Override - public void handler(ContextInfo contextInfo) { - Integer verifiedStatus = contextInfo.getUserInfo().getVerifiedStatus(); - if (2 != verifiedStatus) { - throw new AuthException("该功能需要实名认证之后才可使用"); - } - } -} 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 253ed58..6da5405 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 @@ -127,7 +127,10 @@ public class ContextInfoBuilderAspect { contextInfo.buildCustomInfo(httpRequest, contextInfo.getUserInfoMap()); //针对contextInfo拦截。或修改参数等 for (Class filter : preBuildContext.filter()) { - filter.newInstance().handler(contextInfo); + Object handler = filter.newInstance().handler(contextInfo); + if (null != handler) { + return handler; + } } // 把ContextInfo放到ThreadLocal中 ContextInfoHolder.set(contextInfo);