fix(upms): 保存网站配置时保留各终端验证码开关

移除网站验证码模式变更时对所有 OAuth 终端 captcha_flag 的批量同步,保留前端对默认登录终端的同步行为。

Refs: pig/pigx#7631
(cherry picked from commit 836c2ea5e22f9e9a88f60d8a699e4a66e88979b9)
This commit is contained in:
PIGCLOUD committed 2026-11-03 14:49:22 +08:00
1 parent ca84985d63
commit 65f184ace6
1 file changed
-38
@@ -18,23 +18,15 @@
package com.pig4cloud.pigx.admin.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.pig4cloud.pigx.admin.api.dto.SiteConfigDTO;
import com.pig4cloud.pigx.admin.api.entity.SysOauthClientDetails;
import com.pig4cloud.pigx.admin.api.entity.SysPublicParam;
import com.pig4cloud.pigx.admin.config.ClientDetailsInitRunner;
import com.pig4cloud.pigx.admin.service.SysI18nService;
import com.pig4cloud.pigx.admin.service.SysOauthClientDetailsService;
import com.pig4cloud.pigx.admin.service.SysPublicParamService;
import com.pig4cloud.pigx.admin.service.SysSiteConfigService;
import com.pig4cloud.pigx.common.core.constant.CacheConstants;
import com.pig4cloud.pigx.common.core.constant.CommonConstants;
import com.pig4cloud.pigx.common.core.constant.enums.DictTypeEnum;
import com.pig4cloud.pigx.common.core.constant.enums.YesNoEnum;
import com.pig4cloud.pigx.common.core.util.SpringContextHolder;
import lombok.RequiredArgsConstructor;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
@@ -94,8 +86,6 @@ public class SysSiteConfigServiceImpl implements SysSiteConfigService {
private final SysI18nService sysI18nService;
private final SysOauthClientDetailsService sysOauthClientDetailsService;
@Override
@Cacheable(value = CacheConstants.SITE_CONFIG_DETAILS)
public Map<String, Object> getAggregatedConfig() {
@@ -164,11 +154,6 @@ public class SysSiteConfigServiceImpl implements SysSiteConfigService {
sysPublicParamService.save(newParam);
}
}
// 同步 captcha_flag 到 OAuth 客户端扩展信息
if (dto.getCaptchaType() != null) {
syncCaptchaFlagToClients(!"none".equals(dto.getCaptchaType()));
}
}
/**
@@ -180,27 +165,4 @@ public class SysSiteConfigServiceImpl implements SysSiteConfigService {
// 仅触发 @CacheEvict,无需额外逻辑
}
/**
* 同步验证码开关到所有 OAuth 客户端的 additionalInformation
*
* @param captchaEnable 是否启用验证码
*/
private void syncCaptchaFlagToClients(Boolean captchaEnable) {
String captchaFlag = YesNoEnum.getCode(captchaEnable);
List<SysOauthClientDetails> clients = sysOauthClientDetailsService.list();
for (SysOauthClientDetails client : clients) {
if (StrUtil.isBlank(client.getAdditionalInformation())) {
continue;
}
JSONObject informationObj = JSONUtil.parseObj(client.getAdditionalInformation());
informationObj.set(CommonConstants.CAPTCHA_FLAG, captchaFlag);
client.setAdditionalInformation(informationObj.toString());
sysOauthClientDetailsService.updateById(client);
}
// 刷新 Redis 客户端缓存
SpringContextHolder.publishEvent(new ClientDetailsInitRunner.ClientDetailsInitEvent(this));
}
}