【8.0】【system】更新密码策略配置的两个接口

pull/57/head
fengshuonan 2023-10-04 22:36:37 +08:00
parent 98a23380e0
commit 48ba23fca0
4 changed files with 225 additions and 0 deletions

View File

@ -0,0 +1,53 @@
package cn.stylefeng.roses.kernel.sys.modular.security.controller;
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource;
import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource;
import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource;
import cn.stylefeng.roses.kernel.sys.modular.security.pojo.SecurityConfig;
import cn.stylefeng.roses.kernel.sys.modular.security.service.SecurityConfigService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
*
*
* @author fengshuonan
* @since 2023/10/4 15:59
*/
@RestController
@ApiResource(name = "安全策略配置")
public class SecurityStrategyController {
@Resource
private SecurityConfigService securityConfigService;
/**
*
*
* @author fengshuonan
* @since 2023/10/4 16:00
*/
@GetResource(name = "获取安全策略配置", path = "/security/getSecurityStrategy")
public ResponseData<SecurityConfig> getSecurityStrategy() {
SecurityConfig securityConfig = this.securityConfigService.getSecurityConfig();
return new SuccessResponseData<>(securityConfig);
}
/**
*
*
* @author fengshuonan
* @since 2023/10/4 21:50
*/
@PostResource(name = "更新安全策略配置", path = "/security/updateSecurityStrategy")
public ResponseData<?> updateSecurityStrategy(@Validated @RequestBody SecurityConfig securityConfig) {
this.securityConfigService.updateSecurityConfig(securityConfig);
return new SuccessResponseData<>();
}
}

View File

@ -0,0 +1,73 @@
package cn.stylefeng.roses.kernel.sys.modular.security.pojo;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* DTO
*
* @author fengshuonan
* @since 2023/10/4 16:05
*/
@Data
public class SecurityConfig {
/**
*
*/
@ChineseDescription("最大密码重试次数")
@NotNull(message = "最大密码重试次数不能为空")
private Integer maxErrorLoginCount;
/**
*
*/
@ChineseDescription("密码策略:最少多久更新一次密码,单位天")
@NotNull(message = "密码策略:最少多久更新一次密码不能为空")
private Integer passwordMinUpdateDays;
/**
*
*/
@ChineseDescription("密码历史不可重复次数")
@NotNull(message = "密码历史不可重复次数不能为空")
private Integer passwordMinCantRepeatTimes;
/**
*
*/
@ChineseDescription("密码策略:口令最小长度")
@NotNull(message = "密码策略:口令最小长度不能为空")
private Integer minPasswordLength;
/**
*
*/
@ChineseDescription("密码策略:最少特殊符号数量")
@NotNull(message = "密码策略:最少特殊符号数量不能为空")
private Integer passwordMinSpecialSymbolCount;
/**
*
*/
@ChineseDescription("密码策略:最少大写字母数量")
@NotNull(message = "密码策略:最少大写字母数量不能为空")
private Integer getPasswordMinUpperCaseCount;
/**
*
*/
@ChineseDescription("密码策略:最少小写字母数量")
@NotNull(message = "密码策略:最少小写字母数量不能为空")
private Integer passwordMinLowerCaseCount;
/**
*
*/
@ChineseDescription("密码策略:最少数字符号的数量")
@NotNull(message = "密码策略:最少数字符号的数量不能为空")
private Integer passwordMinNumberCount;
}

View File

@ -0,0 +1,29 @@
package cn.stylefeng.roses.kernel.sys.modular.security.service;
import cn.stylefeng.roses.kernel.sys.modular.security.pojo.SecurityConfig;
/**
*
*
* @author fengshuonan
* @since 2023/10/4 16:22
*/
public interface SecurityConfigService {
/**
*
*
* @author fengshuonan
* @since 2023/10/4 16:23
*/
SecurityConfig getSecurityConfig();
/**
*
*
* @author fengshuonan
* @since 2023/10/4 16:25
*/
void updateSecurityConfig(SecurityConfig securityConfig);
}

View File

@ -0,0 +1,70 @@
package cn.stylefeng.roses.kernel.sys.modular.security.service.impl;
import cn.stylefeng.roses.kernel.auth.api.expander.LoginConfigExpander;
import cn.stylefeng.roses.kernel.config.api.ConfigServiceApi;
import cn.stylefeng.roses.kernel.sys.modular.security.pojo.SecurityConfig;
import cn.stylefeng.roses.kernel.sys.modular.security.service.SecurityConfigService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
*
*
* @author fengshuonan
* @since 2023/10/4 16:24
*/
@Service
public class SecurityConfigServiceImpl implements SecurityConfigService {
@Resource
private ConfigServiceApi configServiceApi;
@Override
public SecurityConfig getSecurityConfig() {
SecurityConfig securityConfig = new SecurityConfig();
securityConfig.setMaxErrorLoginCount(LoginConfigExpander.getMaxErrorLoginCount());
securityConfig.setMinPasswordLength(LoginConfigExpander.getMinPasswordLength());
securityConfig.setPasswordMinSpecialSymbolCount(LoginConfigExpander.getPasswordMinSpecialSymbolCount());
securityConfig.setGetPasswordMinUpperCaseCount(LoginConfigExpander.getPasswordMinUpperCaseCount());
securityConfig.setPasswordMinLowerCaseCount(LoginConfigExpander.getPasswordMinLowerCaseCount());
securityConfig.setPasswordMinNumberCount(LoginConfigExpander.getPasswordMinNumberCount());
securityConfig.setPasswordMinUpdateDays(LoginConfigExpander.getPasswordMinUpdateDays());
securityConfig.setPasswordMinCantRepeatTimes(LoginConfigExpander.getPasswordMinCantRepeatTimes());
return securityConfig;
}
@Override
public void updateSecurityConfig(SecurityConfig securityConfig) {
configServiceApi.updateConfigByCode(LoginConfigExpander.SYS_LOGIN_MAX_ERROR_LOGIN_COUNT,
String.valueOf(securityConfig.getMaxErrorLoginCount()));
configServiceApi.updateConfigByCode(LoginConfigExpander.SYS_LOGIN_MIN_PASSWORD_LENGTH,
String.valueOf(securityConfig.getMinPasswordLength()));
configServiceApi.updateConfigByCode(LoginConfigExpander.SYS_LOGIN_PASSWORD_MIN_SPECIAL_SYMBOL_COUNT,
String.valueOf(securityConfig.getPasswordMinSpecialSymbolCount()));
configServiceApi.updateConfigByCode(LoginConfigExpander.SYS_LOGIN_PASSWORD_MIN_UPPER_CASE_COUNT,
String.valueOf(securityConfig.getGetPasswordMinUpperCaseCount()));
configServiceApi.updateConfigByCode(LoginConfigExpander.SYS_LOGIN_PASSWORD_MIN_LOWER_CASE_COUNT,
String.valueOf(securityConfig.getPasswordMinLowerCaseCount()));
configServiceApi.updateConfigByCode(LoginConfigExpander.SYS_LOGIN_PASSWORD_MIN_NUMBER_COUNT,
String.valueOf(securityConfig.getPasswordMinNumberCount()));
configServiceApi.updateConfigByCode(LoginConfigExpander.SYS_LOGIN_PASSWORD_MIN_UPDATE_DAYS,
String.valueOf(securityConfig.getPasswordMinUpdateDays()));
configServiceApi.updateConfigByCode(LoginConfigExpander.SYS_LOGIN_PASSWORD_MIN_CANT_REPEAT_TIMES,
String.valueOf(securityConfig.getPasswordMinCantRepeatTimes()));
}
}