Browse Source

修改了监督端新增用户时密码规则

dev-V1.0.9
vincent 1 month ago
parent
commit
9636cbc8a9
  1. 13
      zdxt-modules/zdxt-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java
  2. 12
      zdxt-modules/zdxt-system/src/main/java/org/dromara/system/controller/system/SysUserController.java
  3. 12
      zdxt-modules/zdxt-system/src/main/java/org/dromara/system/listener/SysUserImportListener.java

13
zdxt-modules/zdxt-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java

@ -3,7 +3,7 @@ package org.dromara.system.controller.system;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.crypto.digest.BCrypt; import cn.hutool.crypto.digest.DigestUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
@ -92,14 +92,17 @@ public class SysProfileController extends BaseController {
@PutMapping("/updatePwd") @PutMapping("/updatePwd")
public R<Void> updatePwd(@Validated @RequestBody SysUserPasswordBo bo) { public R<Void> updatePwd(@Validated @RequestBody SysUserPasswordBo bo) {
SysUserVo user = userService.selectUserById(LoginHelper.getUserId()); SysUserVo user = userService.selectUserById(LoginHelper.getUserId());
String password = user.getPassword(); String salt = user.getSalt();
if (!BCrypt.checkpw(bo.getOldPassword(), password)) { String loginAccount = StringUtils.isNotBlank(user.getLoginName()) ? user.getLoginName() : user.getUserName();
String oldEncrypted = DigestUtil.md5Hex(loginAccount + bo.getOldPassword() + salt);
if (!oldEncrypted.equals(user.getPassword())) {
return R.fail("修改密码失败,旧密码错误"); return R.fail("修改密码失败,旧密码错误");
} }
if (BCrypt.checkpw(bo.getNewPassword(), password)) { String newEncrypted = DigestUtil.md5Hex(loginAccount + bo.getNewPassword() + salt);
if (newEncrypted.equals(user.getPassword())) {
return R.fail("新密码不能与旧密码相同"); return R.fail("新密码不能与旧密码相同");
} }
int rows = DataPermissionHelper.ignore(() -> userService.resetUserPwd(user.getUserId(), BCrypt.hashpw(bo.getNewPassword()))); int rows = DataPermissionHelper.ignore(() -> userService.resetUserPwd(user.getUserId(), newEncrypted));
if (rows > 0) { if (rows > 0) {
return R.ok(); return R.ok();
} }

12
zdxt-modules/zdxt-system/src/main/java/org/dromara/system/controller/system/SysUserController.java

@ -4,7 +4,8 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.crypto.digest.BCrypt; import cn.hutool.core.util.RandomUtil;
import cn.hutool.crypto.digest.DigestUtil;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -173,7 +174,9 @@ public class SysUserController extends BaseController {
return R.fail("当前租户下用户名额不足,请联系管理员"); return R.fail("当前租户下用户名额不足,请联系管理员");
} }
} }
user.setPassword(BCrypt.hashpw(user.getPassword())); user.randomSalt();
String loginAccount = StringUtils.isNotBlank(user.getLoginName()) ? user.getLoginName() : user.getUserName();
user.setPassword(DigestUtil.md5Hex(loginAccount + user.getPassword() + user.getSalt()));
return toAjax(userService.insertUser(user)); return toAjax(userService.insertUser(user));
} }
@ -237,7 +240,10 @@ public class SysUserController extends BaseController {
public R<Void> resetPwd(@RequestBody SysUserBo user) { public R<Void> resetPwd(@RequestBody SysUserBo user) {
userService.checkUserAllowed(user.getUserId()); userService.checkUserAllowed(user.getUserId());
userService.checkUserDataScope(user.getUserId()); userService.checkUserDataScope(user.getUserId());
user.setPassword(BCrypt.hashpw(user.getPassword())); SysUserVo existingUser = userService.selectUserById(user.getUserId());
String salt = existingUser.getSalt();
String loginAccount = StringUtils.isNotBlank(existingUser.getLoginName()) ? existingUser.getLoginName() : existingUser.getUserName();
user.setPassword(DigestUtil.md5Hex(loginAccount + user.getPassword() + salt));
return toAjax(userService.resetUserPwd(user.getUserId(), user.getPassword())); return toAjax(userService.resetUserPwd(user.getUserId(), user.getPassword()));
} }

12
zdxt-modules/zdxt-system/src/main/java/org/dromara/system/listener/SysUserImportListener.java

@ -2,7 +2,8 @@ package org.dromara.system.listener;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.crypto.digest.BCrypt; import cn.hutool.core.util.RandomUtil;
import cn.hutool.crypto.digest.DigestUtil;
import cn.hutool.http.HtmlUtil; import cn.hutool.http.HtmlUtil;
import cn.idev.excel.context.AnalysisContext; import cn.idev.excel.context.AnalysisContext;
import cn.idev.excel.event.AnalysisEventListener; import cn.idev.excel.event.AnalysisEventListener;
@ -11,6 +12,7 @@ import jakarta.validation.ConstraintViolationException;
import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.core.utils.SpringUtils;
import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.core.utils.ValidatorUtils; import org.dromara.common.core.utils.ValidatorUtils;
import org.dromara.common.excel.core.ExcelListener; import org.dromara.common.excel.core.ExcelListener;
import org.dromara.common.excel.core.ExcelResult; import org.dromara.common.excel.core.ExcelResult;
@ -34,7 +36,7 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo
private final ISysUserService userService; private final ISysUserService userService;
private final String password; private final String initPassword;
private final Boolean isUpdateSupport; private final Boolean isUpdateSupport;
@ -48,7 +50,7 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo
public SysUserImportListener(Boolean isUpdateSupport) { public SysUserImportListener(Boolean isUpdateSupport) {
String initPassword = SpringUtils.getBean(ISysConfigService.class).selectConfigByKey("sys.user.initPassword"); String initPassword = SpringUtils.getBean(ISysConfigService.class).selectConfigByKey("sys.user.initPassword");
this.userService = SpringUtils.getBean(ISysUserService.class); this.userService = SpringUtils.getBean(ISysUserService.class);
this.password = BCrypt.hashpw(initPassword); this.initPassword = initPassword;
this.isUpdateSupport = isUpdateSupport; this.isUpdateSupport = isUpdateSupport;
this.operUserId = LoginHelper.getUserId(); this.operUserId = LoginHelper.getUserId();
} }
@ -61,7 +63,9 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo
if (ObjectUtil.isNull(sysUser)) { if (ObjectUtil.isNull(sysUser)) {
SysUserBo user = BeanUtil.toBean(userVo, SysUserBo.class); SysUserBo user = BeanUtil.toBean(userVo, SysUserBo.class);
ValidatorUtils.validate(user); ValidatorUtils.validate(user);
user.setPassword(password); user.randomSalt();
String loginAccount = StringUtils.isNotBlank(user.getLoginName()) ? user.getLoginName() : user.getUserName();
user.setPassword(DigestUtil.md5Hex(loginAccount + initPassword + user.getSalt()));
user.setCreateBy(operUserId); user.setCreateBy(operUserId);
userService.insertUser(user); userService.insertUser(user);
successNum++; successNum++;

Loading…
Cancel
Save