From b83fd207317fca333c9dcfcc174f1bc9371b6de0 Mon Sep 17 00:00:00 2001 From: wangxiang <1827945911@qq.com> Date: Sat, 2 Sep 2023 09:22:23 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=8F=90=E4=BE=9B=E6=9C=AA=E7=BB=91?= =?UTF-8?q?=E5=AE=9A=E7=94=A8=E6=88=B7=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/constant/CommonConstants.java | 5 --- .../kicc/common/core/enums/ExceptionEnum.java | 35 +++++++++++++++++++ .../KiccAuth2ExceptionSerializer.java | 5 ++- .../UnConfiguredUserDataException.java | 35 +++++++++++++++++++ .../KiccLocalResourceServerTokenServices.java | 6 ++-- .../exp/ResourceAuthExceptionEntryPoint.java | 9 ++++- .../KiccWebResponseExceptionTranslator.java | 5 +++ .../service/KiccUserDetailsService.java | 4 ++- .../controller/VisualDbController.java | 1 - 9 files changed, 91 insertions(+), 14 deletions(-) create mode 100644 kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/enums/ExceptionEnum.java create mode 100644 kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/UnConfiguredUserDataException.java diff --git a/kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/constant/CommonConstants.java b/kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/constant/CommonConstants.java index 97e4ba27..a913f037 100644 --- a/kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/constant/CommonConstants.java +++ b/kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/constant/CommonConstants.java @@ -40,11 +40,6 @@ public interface CommonConstants { */ String BACK_END_PROJECT = "kicc"; - /** - * 失败标记 - */ - Integer FAIL = 1; - /** * 当前页 */ diff --git a/kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/enums/ExceptionEnum.java b/kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/enums/ExceptionEnum.java new file mode 100644 index 00000000..48f31dfc --- /dev/null +++ b/kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/enums/ExceptionEnum.java @@ -0,0 +1,35 @@ +package com.cloud.kicc.common.core.enums; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +/** + *

+ * API错误页面响应状态枚举 + *

+ * + * @Author: wangxiang4 + * @Since: 2023/8/16 + */ +@Getter +@RequiredArgsConstructor +public enum ExceptionEnum { + + UNAUTHORIZED_ACCESS(401, "禁止访问"), + PAGE_NOT_ACCESS(403, "页面无法访问"), + PAGE_NOT_FOUND(404, "网页未找到"), + ERROR(500, "错误"), + NET_WORK_ERROR(10000, "前端Js错误"), + PAGE_NOT_DATA(10100, "无数据页面"); + + /** + * 状态 + */ + private final int value; + + /** + * 描述 + */ + private final String description; + +} diff --git a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/KiccAuth2ExceptionSerializer.java b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/KiccAuth2ExceptionSerializer.java index 94608939..e4746d1b 100644 --- a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/KiccAuth2ExceptionSerializer.java +++ b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/KiccAuth2ExceptionSerializer.java @@ -1,7 +1,6 @@ package com.cloud.kicc.common.security.exception; -import com.cloud.kicc.common.core.constant.CommonConstants; -import com.cloud.kicc.common.security.exception.KiccAuth2Exception; +import com.cloud.kicc.common.core.enums.ExceptionEnum; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.ser.std.StdSerializer; @@ -25,7 +24,7 @@ public class KiccAuth2ExceptionSerializer extends StdSerializer + * 未配置用户数据 + *

+ * + * @Author: wangxiang4 + * @Since: 2023/9/2 + */ +@JsonSerialize(using = KiccAuth2ExceptionSerializer.class) +public class UnConfiguredUserDataException extends KiccAuth2Exception { + + public UnConfiguredUserDataException(String msg) { + super(msg); + } + + public UnConfiguredUserDataException(String msg, Throwable t) { + super(msg, t); + } + + @Override + public String getOAuth2ErrorCode() { + return "un_configured_user_data"; + } + + @Override + public int getHttpErrorCode() { + return HttpStatus.NETWORK_AUTHENTICATION_REQUIRED.value(); + } + +} diff --git a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exp/KiccLocalResourceServerTokenServices.java b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exp/KiccLocalResourceServerTokenServices.java index 187ab539..01b6e590 100644 --- a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exp/KiccLocalResourceServerTokenServices.java +++ b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exp/KiccLocalResourceServerTokenServices.java @@ -7,7 +7,7 @@ import com.cloud.kicc.common.core.enums.CasSystemEnum; import com.cloud.kicc.common.core.jackson.KiccJavaTimeModule; import com.cloud.kicc.common.data.entity.CasUser; import com.cloud.kicc.common.data.entity.KiccUser; -import com.cloud.kicc.common.security.exception.SecurityCheckedException; +import com.cloud.kicc.common.security.exception.UnConfiguredUserDataException; import com.cloud.kicc.common.security.override.jackson2.SimpleGrantedAuthorityMixin; import com.cloud.kicc.system.api.feign.RemoteUserService; import com.fasterxml.jackson.annotation.JsonInclude; @@ -64,7 +64,7 @@ public class KiccLocalResourceServerTokenServices implements ResourceServerToken if (casUser.getExPrincipals().get(CasSystemEnum.KICC) == null) { R result = remoteUserService.selectByCasUserId(casUser.getId()); if (result.getCode() != R.SUCCESS) { - throw new SecurityCheckedException("找不到系统用户请联系您的系统管理员进行配置!"); + throw new UnConfiguredUserDataException("System user not found Contact your system administrator for configuration!", null); } KiccUser user = result.getData(); @@ -90,7 +90,7 @@ public class KiccLocalResourceServerTokenServices implements ResourceServerToken // 覆盖casUser核心authorities String str = casUser.getExPrincipals().get(CasSystemEnum.KICC); - if (!JSONUtil.isJson(str)) throw new RuntimeException("exPrincipals不是json字符串!"); + if (!JSONUtil.isJson(str)) throw new UnConfiguredUserDataException("ExPrincipals not json strings!"); KiccUser kiccUser = new ObjectMapper() .registerModule(new KiccJavaTimeModule()) .addMixIn(SimpleGrantedAuthority.class, SimpleGrantedAuthorityMixin.class) diff --git a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exp/ResourceAuthExceptionEntryPoint.java b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exp/ResourceAuthExceptionEntryPoint.java index 900aa634..24286377 100644 --- a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exp/ResourceAuthExceptionEntryPoint.java +++ b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exp/ResourceAuthExceptionEntryPoint.java @@ -3,6 +3,8 @@ package com.cloud.kicc.common.security.exp; import cn.hutool.http.HttpStatus; import com.cloud.kicc.common.core.constant.CommonConstants; import com.cloud.kicc.common.core.api.R; +import com.cloud.kicc.common.core.enums.ExceptionEnum; +import com.cloud.kicc.common.security.exception.UnConfiguredUserDataException; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; @@ -35,7 +37,7 @@ public class ResourceAuthExceptionEntryPoint implements AuthenticationEntryPoint response.setCharacterEncoding(CommonConstants.UTF8); response.setContentType(CommonConstants.CONTENT_TYPE); R result = new R<>(); - result.setCode(CommonConstants.FAIL); + result.setCode(ExceptionEnum.UNAUTHORIZED_ACCESS.getValue()); response.setStatus(HttpStatus.HTTP_UNAUTHORIZED); if (authException != null) { result.setMsg("error"); @@ -46,6 +48,11 @@ public class ResourceAuthExceptionEntryPoint implements AuthenticationEntryPoint if (authException instanceof InsufficientAuthenticationException) { response.setStatus(org.springframework.http.HttpStatus.FAILED_DEPENDENCY.value()); result.setMsg("token expire"); + + // 未配置用户数据 + if (authException.getCause() instanceof UnConfiguredUserDataException) { + result.setCode(ExceptionEnum.PAGE_NOT_DATA.getValue()); + } } PrintWriter printWriter = response.getWriter(); printWriter.append(objectMapper.writeValueAsString(result)); diff --git a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/override/KiccWebResponseExceptionTranslator.java b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/override/KiccWebResponseExceptionTranslator.java index 89146684..f99ce039 100644 --- a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/override/KiccWebResponseExceptionTranslator.java +++ b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/override/KiccWebResponseExceptionTranslator.java @@ -65,6 +65,11 @@ public class KiccWebResponseExceptionTranslator implements WebResponseExceptionT return handleOAuth2Exception(new SecurityCheckedException(ase.getMessage(), ase)); } + ase = (UnConfiguredUserDataException) throwableAnalyzer.getFirstThrowableOfType(UnConfiguredUserDataException.class, causeChain); + if (ase != null) { + return handleOAuth2Exception(new UnConfiguredUserDataException(ase.getMessage(), ase)); + } + ase = (OAuth2Exception) throwableAnalyzer.getFirstThrowableOfType(OAuth2Exception.class, causeChain); if (ase != null) { return handleOAuth2Exception((OAuth2Exception) ase); diff --git a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/KiccUserDetailsService.java b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/KiccUserDetailsService.java index 781d1a6a..ea73c775 100644 --- a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/KiccUserDetailsService.java +++ b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/KiccUserDetailsService.java @@ -78,7 +78,9 @@ public interface KiccUserDetailsService extends UserDetailsService, Ordered { user.getUpdateById(), user.getUpdateByName(), user.getUpdateTime(), - user.getRemarks() + user.getRemarks(), + null, + user.getTenantId() ); } diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/bigscreen/controller/VisualDbController.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/bigscreen/controller/VisualDbController.java index 2bffc745..d1ef7762 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/bigscreen/controller/VisualDbController.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/bigscreen/controller/VisualDbController.java @@ -27,7 +27,6 @@ import javax.crypto.spec.SecretKeySpec; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import java.io.IOException; -import java.io.InputStream; import java.nio.charset.Charset; import java.util.Arrays; import java.util.LinkedHashMap;