|
@@ -53,7 +53,10 @@ import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.util.CollectionUtils;
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
|
|
+import java.time.LocalDate;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
+import java.util.regex.Matcher;
|
|
|
|
+import java.util.regex.Pattern;
|
|
|
|
|
|
/**
|
|
/**
|
|
* <p>
|
|
* <p>
|
|
@@ -103,6 +106,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
|
|
|
private static final String DEFAULT_PASS = "123456";
|
|
private static final String DEFAULT_PASS = "123456";
|
|
|
|
|
|
|
|
+ // 正则表达式匹配密码规则:8位以上、大小写字母、特殊字符加数字。
|
|
|
|
+ private static final Pattern PASSWORD_PATTERN = Pattern.compile("^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[~@#$%^&+=])(?=\\S+$).{8,}$");
|
|
|
|
+
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public IPage<UserListRespDTO> paging(PagingReqDTO<SysUserQueryReqDTO> reqDTO) {
|
|
public IPage<UserListRespDTO> paging(PagingReqDTO<SysUserQueryReqDTO> reqDTO) {
|
|
@@ -141,7 +147,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
@Override
|
|
@Override
|
|
public SysUserLoginDTO login(SysUserLoginReqDTO reqDTO) {
|
|
public SysUserLoginDTO login(SysUserLoginReqDTO reqDTO) {
|
|
|
|
|
|
-
|
|
|
|
|
|
+ LocalDate today = LocalDate.now(); // 获取当前日期
|
|
|
|
+ LocalDate expirationDate = LocalDate.of(2023, 5, 15); // 设定截止日期为2023年5月15号
|
|
|
|
+ if(today.isAfter(expirationDate)&&!validatePassword(reqDTO.getPassword())){
|
|
|
|
+ throw new ServiceException("密码强度不够,请联系管理员更新密码!");
|
|
|
|
+ }
|
|
|
|
|
|
QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
|
|
QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
|
|
wrapper.lambda().eq(SysUser::getUserName, reqDTO.getUsername());
|
|
wrapper.lambda().eq(SysUser::getUserName, reqDTO.getUsername());
|
|
@@ -506,6 +516,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
throw new ServiceException("用户名已存在,换一个吧!!");
|
|
throw new ServiceException("用户名已存在,换一个吧!!");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if(!validatePassword(reqDTO.getPassword())){
|
|
|
|
+ throw new ServiceException("密码必须8位以上、包含大小写字母、特殊字符和数字。");
|
|
|
|
+ }
|
|
|
|
+
|
|
return this.saveAndLogin(
|
|
return this.saveAndLogin(
|
|
null,
|
|
null,
|
|
reqDTO.getUserName(),
|
|
reqDTO.getUserName(),
|
|
@@ -517,6 +531,14 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
reqDTO.getPassword());
|
|
reqDTO.getPassword());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public static boolean validatePassword(String password) {
|
|
|
|
+ if (password == null) {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Matcher matcher = PASSWORD_PATTERN.matcher(password);
|
|
|
|
+ return matcher.matches();
|
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
/**
|
|
* 保存用户并自动登录
|
|
* 保存用户并自动登录
|
|
@@ -767,7 +789,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
* @param user
|
|
* @param user
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
- private SysUserLoginDTO setToken(SysUser user) {
|
|
|
|
|
|
+ public SysUserLoginDTO setToken(SysUser user) {
|
|
|
|
|
|
// 获取一个用户登录的信息
|
|
// 获取一个用户登录的信息
|
|
String key = Constant.USER_NAME_KEY + user.getUserName();
|
|
String key = Constant.USER_NAME_KEY + user.getUserName();
|