From fe066096c891cc0233bc384d9b84c732a708f173 Mon Sep 17 00:00:00 2001 From: awenes <1121353141@qq.com> Date: Wed, 12 Jun 2024 14:55:44 +0800 Subject: [PATCH] =?UTF-8?q?:zap:=20=E8=BA=AB=E4=BB=BD=E6=BA=90=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E9=AA=8C=E8=AF=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/IdentitySourceServiceImpl.java | 41 ++++++++++++------- .../dingtalk/DingTalkConfig.java | 3 ++ .../identitysource/feishu/FeiShuConfig.java | 3 ++ 3 files changed, 33 insertions(+), 14 deletions(-) diff --git a/eiam-console/src/main/java/cn/topiam/employee/console/service/identitysource/impl/IdentitySourceServiceImpl.java b/eiam-console/src/main/java/cn/topiam/employee/console/service/identitysource/impl/IdentitySourceServiceImpl.java index ed9ad9e2..245fcfac 100644 --- a/eiam-console/src/main/java/cn/topiam/employee/console/service/identitysource/impl/IdentitySourceServiceImpl.java +++ b/eiam-console/src/main/java/cn/topiam/employee/console/service/identitysource/impl/IdentitySourceServiceImpl.java @@ -20,6 +20,11 @@ package cn.topiam.employee.console.service.identitysource.impl; import java.util.List; import java.util.Optional; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; import org.springframework.cache.annotation.CacheConfig; import org.springframework.data.domain.PageRequest; import org.springframework.data.jpa.domain.Specification; @@ -245,20 +250,28 @@ public class IdentitySourceServiceImpl implements IdentitySourceService { */ @Override public Boolean identitySourceConfigValidator(IdentitySourceConfigValidatorParam param) { - return switch (param.getProvider()) { - //钉钉 - case DINGTALK -> { - DingTalkConfig config = JSONObject.parseObject(param.getConfig().toJSONString(), - DingTalkConfig.class); - yield new DingTalkConfigValidator().validate(config); - } - case FEISHU -> { - FeiShuConfig config = JSONObject.parseObject(param.getConfig().toJSONString(), - FeiShuConfig.class); - yield new FeiShuConfigValidator().validate(config); - } - default -> throw new TopIamException("暂未支持此提供商连接验证"); - }; + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); + try { + return switch (param.getProvider()) { + //钉钉 + case DINGTALK -> { + DingTalkConfig config = objectMapper + .readValue(param.getConfig().toJSONString(), DingTalkConfig.class);; + yield new DingTalkConfigValidator().validate(config); + } + case FEISHU -> { + FeiShuConfig config = objectMapper + .readValue(param.getConfig().toJSONString(), FeiShuConfig.class); + yield new FeiShuConfigValidator().validate(config); + } + default -> throw new TopIamException("暂未支持此提供商连接验证"); + }; + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } } /** diff --git a/eiam-identity-source/eiam-identity-source-dingtalk/src/main/java/cn/topiam/employee/identitysource/dingtalk/DingTalkConfig.java b/eiam-identity-source/eiam-identity-source-dingtalk/src/main/java/cn/topiam/employee/identitysource/dingtalk/DingTalkConfig.java index 41ac7331..aecb162b 100644 --- a/eiam-identity-source/eiam-identity-source-dingtalk/src/main/java/cn/topiam/employee/identitysource/dingtalk/DingTalkConfig.java +++ b/eiam-identity-source/eiam-identity-source-dingtalk/src/main/java/cn/topiam/employee/identitysource/dingtalk/DingTalkConfig.java @@ -67,4 +67,7 @@ public class DingTalkConfig extends IdentitySourceConfig { */ @JsonPropertyEncrypt private String token; + + public DingTalkConfig() { + } } diff --git a/eiam-identity-source/eiam-identity-source-feishu/src/main/java/cn/topiam/employee/identitysource/feishu/FeiShuConfig.java b/eiam-identity-source/eiam-identity-source-feishu/src/main/java/cn/topiam/employee/identitysource/feishu/FeiShuConfig.java index 1d07a548..d092f97f 100644 --- a/eiam-identity-source/eiam-identity-source-feishu/src/main/java/cn/topiam/employee/identitysource/feishu/FeiShuConfig.java +++ b/eiam-identity-source/eiam-identity-source-feishu/src/main/java/cn/topiam/employee/identitysource/feishu/FeiShuConfig.java @@ -63,4 +63,7 @@ public class FeiShuConfig extends IdentitySourceConfig { */ @JsonPropertyEncrypt private String verificationToken; + + public FeiShuConfig() { + } }