等保 用户密码相关问题

busUser
wj 2 years ago
parent e55462b303
commit b58ce6b018

@ -2,7 +2,6 @@ package com.glxp.sale.admin.controller.auth;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.glxp.sale.admin.annotation.AuthRuleAnnotation; import com.glxp.sale.admin.annotation.AuthRuleAnnotation;
import com.glxp.sale.admin.dao.inout.WarehouseUserDao;
import com.glxp.sale.admin.entity.auth.AuthAdmin; import com.glxp.sale.admin.entity.auth.AuthAdmin;
import com.glxp.sale.admin.entity.auth.AuthRole; import com.glxp.sale.admin.entity.auth.AuthRole;
import com.glxp.sale.admin.entity.auth.AuthRoleAdmin; import com.glxp.sale.admin.entity.auth.AuthRoleAdmin;
@ -18,16 +17,13 @@ import com.glxp.sale.admin.req.inventory.FilterInvUserRequest;
import com.glxp.sale.admin.res.PageSimpleResponse; import com.glxp.sale.admin.res.PageSimpleResponse;
import com.glxp.sale.admin.res.auth.AuthAdminResponse; import com.glxp.sale.admin.res.auth.AuthAdminResponse;
import com.glxp.sale.admin.res.auth.AuthAdminRoleResponse; import com.glxp.sale.admin.res.auth.AuthAdminRoleResponse;
import com.glxp.sale.admin.res.inventory.InvWarehouseResponse;
import com.glxp.sale.admin.service.auth.AuthAdminService; import com.glxp.sale.admin.service.auth.AuthAdminService;
import com.glxp.sale.admin.service.auth.AuthRoleAdminService; import com.glxp.sale.admin.service.auth.AuthRoleAdminService;
import com.glxp.sale.admin.service.auth.AuthRoleService; import com.glxp.sale.admin.service.auth.AuthRoleService;
import com.glxp.sale.admin.service.auth.CustomerInfoService; import com.glxp.sale.admin.service.auth.CustomerInfoService;
import com.glxp.sale.admin.service.basic.BussinessTypeService;
import com.glxp.sale.admin.service.inout.WarehouseUserService; import com.glxp.sale.admin.service.inout.WarehouseUserService;
import com.glxp.sale.admin.service.inventory.InvBusUserService; import com.glxp.sale.admin.service.inventory.InvBusUserService;
import com.glxp.sale.admin.service.inventory.InvSubWarehouseService; import com.glxp.sale.admin.service.inventory.InvSubWarehouseService;
import com.glxp.sale.admin.service.inventory.InvWarehouseService;
import com.glxp.sale.admin.util.PasswordUtils; import com.glxp.sale.admin.util.PasswordUtils;
import com.glxp.sale.common.enums.ResultEnum; import com.glxp.sale.common.enums.ResultEnum;
import com.glxp.sale.common.res.BaseResponse; import com.glxp.sale.common.res.BaseResponse;
@ -42,6 +38,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.*; import java.util.*;
import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -276,7 +273,12 @@ public class AuthAdminController {
AuthAdmin authAdmin = new AuthAdmin(); AuthAdmin authAdmin = new AuthAdmin();
BeanUtils.copyProperties(authAdminSaveRequest, authAdmin); BeanUtils.copyProperties(authAdminSaveRequest, authAdmin);
if (authAdmin.getPassWord() != null) { if (authAdmin.getPassWord() != null) {
boolean matches = Pattern.matches("^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\\\W_.*%@!]+$)(?![a-z0-9]+$)(?![a-z\\\\W_.;*%@!]+$)(?![0-9\\\\W_.;*%@!]+$)[a-zA-Z0-9\\\\W_.;*%@!]{8,20}$", authAdmin.getPassWord());
if(!matches){
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "密码需要包含大写字母、小写字符、数字、特殊字符(含_.%@!)其中任意三种,长度8-20位");
}
authAdmin.setPassWord(PasswordUtils.authAdminPwd(authAdmin.getPassWord())); authAdmin.setPassWord(PasswordUtils.authAdminPwd(authAdmin.getPassWord()));
authAdmin.setLastUpdatePwdTime(new Date());
} }
authAdmin.setLastModifyTime(new Date()); authAdmin.setLastModifyTime(new Date());
boolean b = authAdminService.updateAuthAdmin(authAdmin); boolean b = authAdminService.updateAuthAdmin(authAdmin);
@ -308,8 +310,8 @@ public class AuthAdminController {
if (authAdminSaveRequest.getId() == null) { if (authAdminSaveRequest.getId() == null) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "参数错误!"); return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "参数错误!");
} }
InvSubWarehouseEntity invSubWarehouseEntity=invSubWarehouseService.filterGroupInvSubAndcode(authAdminSaveRequest.getLocSubInvCode()); InvSubWarehouseEntity invSubWarehouseEntity = invSubWarehouseService.filterGroupInvSubAndcode(authAdminSaveRequest.getLocSubInvCode());
if(invSubWarehouseEntity!=null){ if (invSubWarehouseEntity != null) {
authAdminSaveRequest.setLocInvCode(invSubWarehouseEntity.getParentId()); authAdminSaveRequest.setLocInvCode(invSubWarehouseEntity.getParentId());
} }
AuthAdmin authAdmin = new AuthAdmin(); AuthAdmin authAdmin = new AuthAdmin();
@ -332,20 +334,18 @@ public class AuthAdminController {
public BaseResponse delete(@RequestBody AuthAdminSaveRequest authAdminSaveRequest) { public BaseResponse delete(@RequestBody AuthAdminSaveRequest authAdminSaveRequest) {
FilterInvUserRequest warehouseUser = new FilterInvUserRequest();
FilterInvUserRequest warehouseUser=new FilterInvUserRequest();
warehouseUser.setUserid(authAdminSaveRequest.getId()); warehouseUser.setUserid(authAdminSaveRequest.getId());
List<WarehouseUserEntity> warehouseUserEntityList=warehouseUserService.filterWarehouseUsers(warehouseUser); List<WarehouseUserEntity> warehouseUserEntityList = warehouseUserService.filterWarehouseUsers(warehouseUser);
if(warehouseUserEntityList.size()==0){ if (warehouseUserEntityList.size() == 0) {
FilterInvBusUserRequest invBusUserEntity=new FilterInvBusUserRequest(); FilterInvBusUserRequest invBusUserEntity = new FilterInvBusUserRequest();
invBusUserEntity.setUserId(authAdminSaveRequest.getId()+""); invBusUserEntity.setUserId(authAdminSaveRequest.getId() + "");
List<InvBusUserEntity> invBusUserList=invBusUserService.filterInvBusUser(invBusUserEntity); List<InvBusUserEntity> invBusUserList = invBusUserService.filterInvBusUser(invBusUserEntity);
if(invBusUserList.size()>0){ if (invBusUserList.size() > 0) {
return ResultVOUtils.error(999,"该用户存在关联单据信息,请先解除再删除"); return ResultVOUtils.error(999, "该用户存在关联单据信息,请先解除再删除");
} }
}else{ } else {
return ResultVOUtils.error(999,"该用户存在关联仓库信息,请先解除再删除"); return ResultVOUtils.error(999, "该用户存在关联仓库信息,请先解除再删除");
} }

@ -1,5 +1,6 @@
package com.glxp.sale.admin.controller.auth; package com.glxp.sale.admin.controller.auth;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.glxp.sale.admin.annotation.AuthRuleAnnotation; import com.glxp.sale.admin.annotation.AuthRuleAnnotation;
import com.glxp.sale.admin.dao.auth.AuthLicenseDao; import com.glxp.sale.admin.dao.auth.AuthLicenseDao;
@ -146,6 +147,8 @@ public class LoginController {
loginResponse.setToken(token); loginResponse.setToken(token);
loginResponse.setDept(authAdmin.getDept()); loginResponse.setDept(authAdmin.getDept());
loginResponse.setDeptName(authAdmin.getDeptName()); loginResponse.setDeptName(authAdmin.getDeptName());
loginResponse.setNeedChangePwd(cn.hutool.core.date.DateUtil.between(authAdmin.getLastUpdatePwdTime() == null ? cn.hutool.core.date.DateUtil.date():authAdmin.getLastUpdatePwdTime()
, cn.hutool.core.date.DateUtil.date(), DateUnit.DAY)>=90);
return ResultVOUtils.success(loginResponse); return ResultVOUtils.success(loginResponse);
} }
@ -300,7 +303,8 @@ public class LoginController {
authAdminUp.setId(authAdmin.getId()); authAdminUp.setId(authAdmin.getId());
String newPwd = PasswordUtils.authAdminPwd(updatePasswordRequest.getNewPassword()); String newPwd = PasswordUtils.authAdminPwd(updatePasswordRequest.getNewPassword());
authAdminUp.setPassWord(newPwd); authAdminUp.setPassWord(newPwd);
authAdmin.setLastModifyTime(new Date()); authAdminUp.setLastModifyTime(new Date());
authAdminUp.setLastUpdatePwdTime(new Date());
boolean b = authAdminService.updateAuthAdmin(authAdminUp); boolean b = authAdminService.updateAuthAdmin(authAdminUp);
if (b) { if (b) {
return ResultVOUtils.success(); return ResultVOUtils.success();

@ -49,6 +49,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.*; import java.util.*;
import java.util.regex.Pattern;
@RestController @RestController
@Slf4j @Slf4j
@ -230,6 +231,10 @@ public class RegisterController {
if (!phoneNum.equals(userRegisterEntity.getMobile())) { if (!phoneNum.equals(userRegisterEntity.getMobile())) {
return ResultVOUtils.error(500, "手机号与获取验证码不一致"); return ResultVOUtils.error(500, "手机号与获取验证码不一致");
} }
boolean matches = Pattern.matches("^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\\\W_.*%@!]+$)(?![a-z0-9]+$)(?![a-z\\\\W_.;*%@!]+$)(?![0-9\\\\W_.;*%@!]+$)[a-zA-Z0-9\\\\W_.;*%@!]{8,20}$", userRegisterEntity.getPassword());
if(!matches){
return ResultVOUtils.error(500, "密码需要包含大写字母、小写字符、数字、特殊字符(含_.%@!)其中任意三种,长度8-20位");
}
boolean isExitPhone = userRegisterService.isExit(userRegisterEntity.getMobile()); boolean isExitPhone = userRegisterService.isExit(userRegisterEntity.getMobile());
if (isExitPhone) { if (isExitPhone) {
return ResultVOUtils.error(500, "该手机号已被注册"); return ResultVOUtils.error(500, "该手机号已被注册");
@ -267,7 +272,7 @@ public class RegisterController {
} }
userRegisterEntity.setUserName(userName); userRegisterEntity.setUserName(userName);
UserRegisterEntity userRegisterEntity1 = userRegisterService.selectByMobile(userRegisterEntity.getMobile()); UserRegisterEntity userRegisterEntity1 = userRegisterService.selectByMobile(userRegisterEntity.getMobile());
if(userRegisterEntity1!=null){ if (userRegisterEntity1 != null) {
userRegisterService.deleteByMobile(userRegisterEntity.getMobile()); userRegisterService.deleteByMobile(userRegisterEntity.getMobile());
} }
boolean b = userRegisterService.insertUserRegister(userRegisterEntity); boolean b = userRegisterService.insertUserRegister(userRegisterEntity);
@ -297,12 +302,10 @@ public class RegisterController {
if ((System.currentTimeMillis() - lastTime) > 1000 * 60 * 5) { if ((System.currentTimeMillis() - lastTime) > 1000 * 60 * 5) {
return ResultVOUtils.error(500, "验证码已过期,请重新获取"); return ResultVOUtils.error(500, "验证码已过期,请重新获取");
} }
if (checkCode != resetPasswdRequest.getCheckCode()) { if (checkCode != resetPasswdRequest.getCheckCode() || !phoneNum.equals(resetPasswdRequest.getMobile())) {
return ResultVOUtils.error(500, "验证码错误,请重新获取"); return ResultVOUtils.error(500, "验证码错误");
}
if (!phoneNum.equals(resetPasswdRequest.getMobile())) {
return ResultVOUtils.error(500, "手机号与获取验证码不一致");
} }
try {
AuthAdmin authAdmin = authAdminService.findByUserName(resetPasswdRequest.getUserName()); AuthAdmin authAdmin = authAdminService.findByUserName(resetPasswdRequest.getUserName());
if (authAdmin == null) { if (authAdmin == null) {
return ResultVOUtils.error(500, "该用户不存在"); return ResultVOUtils.error(500, "该用户不存在");
@ -311,12 +314,15 @@ public class RegisterController {
if (customerContactEntity != null && customerContactEntity.getMobile().equals(phoneNum)) { if (customerContactEntity != null && customerContactEntity.getMobile().equals(phoneNum)) {
authAdmin.setPassWord(resetPasswdRequest.getPassword()); authAdmin.setPassWord(resetPasswdRequest.getPassword());
authAdmin.setLastModifyTime(new Date()); authAdmin.setLastModifyTime(new Date());
authAdmin.setLastUpdatePwdTime(new Date());
authAdminService.updateAuthAdmin(authAdmin); authAdminService.updateAuthAdmin(authAdmin);
} else { } else {
return ResultVOUtils.error(500, "手机号与该用户不匹配"); return ResultVOUtils.error(500, "手机号与该用户不匹配");
} }
return ResultVOUtils.success("密码修改成功"); return ResultVOUtils.success("密码修改成功");
} finally {
redisUtil.del(Constant.CAPTCHAS + resetPasswdRequest.getMobile());
}
} }
@PostMapping("salewarehouse/register/check") @PostMapping("salewarehouse/register/check")
@ -381,6 +387,7 @@ public class RegisterController {
authAdmin.setEmployeeName(userRegisterEntity.getNickName()); authAdmin.setEmployeeName(userRegisterEntity.getNickName());
authAdmin.setUserFlag(1); authAdmin.setUserFlag(1);
authAdmin.setLastModifyTime(new Date()); authAdmin.setLastModifyTime(new Date());
authAdmin.setLastUpdatePwdTime(new Date(userRegisterEntity.getRegisterTime()));
authAdminService.insertAuthAdmin(authAdmin); authAdminService.insertAuthAdmin(authAdmin);
authAdmin = authAdminService.findByUserName(authAdmin.getUserName()); authAdmin = authAdminService.findByUserName(authAdmin.getUserName());

@ -24,6 +24,10 @@ public class AuthAdmin {
private Integer userFlag; private Integer userFlag;
private Date lastModifyTime; private Date lastModifyTime;
/**
*
*/
private Date lastUpdatePwdTime;
private String comments; private String comments;
private String employeeName; private String employeeName;
private String CustomerId; private String CustomerId;

@ -3,7 +3,6 @@ package com.glxp.sale.admin.req.auth;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List; import java.util.List;
/** /**

@ -2,12 +2,24 @@ package com.glxp.sale.admin.req.auth;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Pattern;
@Data @Data
public class ResetPasswdRequest { public class ResetPasswdRequest {
@NotEmpty(message = "密码不能为空")
@Pattern(regexp = "^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\\\W_.*%@!]+$)(?![a-z0-9]+$)(?![a-z\\\\W_.;*%@!]+$)(?![0-9\\\\W_.;*%@!]+$)[a-zA-Z0-9\\\\W_.;*%@!]{8,20}$"
, message = "密码需要包含大写字母、小写字符、数字、特殊字符(含_.%@!)其中任意三种,长度8-20位")
private String password; private String password;
@NotEmpty(message = "手机号不能为空")
private String mobile; private String mobile;
@NotEmpty(message = "确认密码不能为空")
@Pattern(regexp = "^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\\\W_.*%@!]+$)(?![a-z0-9]+$)(?![a-z\\\\W_.;*%@!]+$)(?![0-9\\\\W_.;*%@!]+$)[a-zA-Z0-9\\\\W_.;*%@!]{8,20}$"
, message = "密码需要包含大写字母、小写字符、数字、特殊字符(含_.%@!)其中任意三种,长度8-20位")
private String confirmPassword; private String confirmPassword;
@NotEmpty(message = "验证码不能为空")
private int checkCode; private int checkCode;
@NotEmpty(message = "用户名不能为空")
private String userName; private String userName;
} }

@ -4,6 +4,7 @@ import lombok.Data;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
/** /**
* *
@ -18,6 +19,8 @@ public class UpdatePasswordRequest {
private String oldPassword; private String oldPassword;
@NotEmpty(message = "请输入新密码") @NotEmpty(message = "请输入新密码")
@Pattern(regexp = "^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\\\W_.*%@!]+$)(?![a-z0-9]+$)(?![a-z\\\\W_.;*%@!]+$)(?![0-9\\\\W_.;*%@!]+$)[a-zA-Z0-9\\\\W_.;*%@!]{8,20}$"
, message = "密码需要包含大写字母、小写字符、数字、特殊字符(含_.%@!)其中任意三种,长度8-20位")
private String newPassword; private String newPassword;
} }

@ -10,4 +10,6 @@ public class LoginResponse {
private String dept; private String dept;
private String deptName; private String deptName;
private boolean needChangePwd = false;
} }

@ -143,6 +143,7 @@
<if test="lastLoginIp != null">lastLoginIp=#{lastLoginIp},</if> <if test="lastLoginIp != null">lastLoginIp=#{lastLoginIp},</if>
<if test="lastLoginTime != null">lastLoginTime=#{lastLoginTime},</if> <if test="lastLoginTime != null">lastLoginTime=#{lastLoginTime},</if>
<if test="lastModifyTime != null">lastModifyTime=#{lastModifyTime},</if> <if test="lastModifyTime != null">lastModifyTime=#{lastModifyTime},</if>
<if test="lastUpdatePwdTime != null">lastUpdatePwdTime=#{lastUpdatePwdTime},</if>
<if test="userFlag != null">userFlag=#{userFlag},</if> <if test="userFlag != null">userFlag=#{userFlag},</if>
<if test="employeeName != null">employeeName=#{employeeName},</if> <if test="employeeName != null">employeeName=#{employeeName},</if>
<if test="locInvCode != null">locInvCode=#{locInvCode},</if> <if test="locInvCode != null">locInvCode=#{locInvCode},</if>

@ -16,3 +16,6 @@ CALL Pro_Temp_ColumnWork('basic_udirel', 'useMuti', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('basic_udirel', 'useNum', 'int', 1); CALL Pro_Temp_ColumnWork('basic_udirel', 'useNum', 'int', 1);
CALL Pro_Temp_ColumnWork('auth_user', 'lastUpdatePwdTime', 'datetime ', 1);

Loading…
Cancel
Save