mirror of https://gitee.com/stylefeng/roses
【8.0】【system】更新密码策略配置的两个接口
parent
98a23380e0
commit
48ba23fca0
|
@ -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<>();
|
||||
}
|
||||
|
||||
}
|
|
@ -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;
|
||||
|
||||
}
|
|
@ -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);
|
||||
|
||||
}
|
|
@ -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()));
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue