From d4020168658efdee89a633083cd9c14b06c4d863 Mon Sep 17 00:00:00 2001 From: zhangf <1603559716@qq.com> Date: 星期三, 11 九月 2024 17:09:10 +0800 Subject: [PATCH] 修改消息推送时间间隔 --- src/main/java/com/gkhy/fourierSpecialGasMonitor/domain/account/service/impl/UserDomainServiceImpl.java | 51 +++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 37 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/gkhy/fourierSpecialGasMonitor/domain/account/service/impl/UserDomainServiceImpl.java b/src/main/java/com/gkhy/fourierSpecialGasMonitor/domain/account/service/impl/UserDomainServiceImpl.java index f03d0bb..283d527 100644 --- a/src/main/java/com/gkhy/fourierSpecialGasMonitor/domain/account/service/impl/UserDomainServiceImpl.java +++ b/src/main/java/com/gkhy/fourierSpecialGasMonitor/domain/account/service/impl/UserDomainServiceImpl.java @@ -7,6 +7,7 @@ import com.gkhy.fourierSpecialGasMonitor.commons.domain.SearchResult; import com.gkhy.fourierSpecialGasMonitor.commons.enums.ResultCode; import com.gkhy.fourierSpecialGasMonitor.commons.enums.SystemCacheKeyEnum; +import com.gkhy.fourierSpecialGasMonitor.commons.enums.UserRoleEnum; import com.gkhy.fourierSpecialGasMonitor.commons.exception.BusinessException; import com.gkhy.fourierSpecialGasMonitor.commons.model.PageQuery; import com.gkhy.fourierSpecialGasMonitor.commons.utils.BeanCopyUtils; @@ -25,6 +26,8 @@ import com.gkhy.fourierSpecialGasMonitor.domain.account.service.SysDepartmentDomainService; import com.gkhy.fourierSpecialGasMonitor.domain.account.service.UserDomainService; import com.gkhy.fourierSpecialGasMonitor.domain.account.model.dto.UserInfoDomainDTO; +import com.gkhy.fourierSpecialGasMonitor.utils.PasswordCheckUtil; +import com.gkhy.fourierSpecialGasMonitor.utils.ThreadLocalUtil; import com.google.common.collect.Range; import com.google.common.hash.Hashing; import org.redisson.api.RMapCache; @@ -67,6 +70,14 @@ @Autowired private SysDepartmentDomainService departmentDomainService; + + private User getCurrentUser(){ + Long userId = ThreadLocalUtil.get().getId(); + User user = userRepository.findUserByIdAndStatus(userId, UserStatusEnum.STATUS_ACTIVE.getStatus()); + if (user == null) + throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(),"未成功获取用户信息"); + return user; + } @Override @Transactional @@ -291,22 +302,37 @@ @Override @Transactional public boolean updateUserPwd(Long uid, String oldPwd, String newPwd) { - if(uid == null || oldPwd == null || newPwd == null || oldPwd.isEmpty() || newPwd.isEmpty()) + User currentUser = getCurrentUser(); + Boolean flag = false; + for (SysUserRoleBind sysUserRoleBind : currentUser.getSysUserRoleBinds()) { + if ("超级管理员".equals(sysUserRoleBind.getRole().getName())){ + flag = true; + } + } + if(uid == null || oldPwd == null || newPwd == null || newPwd.isEmpty()) throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "参数缺失"); Optional<User> userOptional = userRepository.findById(uid); if(!userOptional.isPresent()){ throw new BusinessException(this.getClass(), ResultCode.BUSINESS_ERROR_ACCOUNT_NOT_EXIST.getCode(), "用户不存在"); } User user = userOptional.get(); - //验证旧密码 - String hash = String.valueOf(Hashing.hmacMd5(user.getSalt().getBytes(StandardCharsets.UTF_8)).hashString(oldPwd, - StandardCharsets.UTF_8)); - if(!hash.equals(user.getHash())) - throw new BusinessException(this.getClass(), ResultCode.BUSINESS_ERROR_NOT_ALLOWED.getCode(), "旧密码错误"); - String newSalt = String.valueOf(Hashing.hmacMd5("".getBytes()).hashString(""+uid+Range.atLeast(1)+System.nanoTime(), - StandardCharsets.UTF_8)); - String newHash = String.valueOf(Hashing.hmacMd5(newSalt.getBytes(StandardCharsets.UTF_8)).hashString(newPwd, - StandardCharsets.UTF_8)); + PasswordCheckUtil.passwordIsValid(newPwd.trim()); + if (!flag){ + if(oldPwd.isEmpty()) { + throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "参数缺失"); + } + //验证旧密码 + String hash = String.valueOf(Hashing.hmacMd5(user.getSalt().getBytes(StandardCharsets.UTF_8)).hashString(oldPwd, + StandardCharsets.UTF_8)); + if(!hash.equals(user.getHash())) + throw new BusinessException(this.getClass(), ResultCode.BUSINESS_ERROR_NOT_ALLOWED.getCode(), "旧密码错误"); + } + String newSalt = genPasswordSalt(); + String newHash = genPasswordHash(newPwd, newSalt); + //String newSalt = String.valueOf(Hashing.hmacMd5("".getBytes()).hashString(""+uid+Range.atLeast(1)+System.nanoTime(), + // StandardCharsets.UTF_8)); + //String newHash = String.valueOf(Hashing.hmacMd5(newSalt.getBytes(StandardCharsets.UTF_8)).hashString(newPwd, + // StandardCharsets.UTF_8)); if(userRepository.updatePassword(uid,newHash,newSalt, LocalDateTime.now()) == 1){ // deleteUserCache(uid); return true; @@ -361,7 +387,7 @@ if(Hashing.hmacMd5(salt.getBytes(StandardCharsets.UTF_8)).hashString(pwd, StandardCharsets.UTF_8).toString().equals(hash)){ return true; }else { - return true; + return false; } } @@ -641,7 +667,4 @@ String hash = Hashing.hmacMd5(salt.getBytes(StandardCharsets.UTF_8)).hashBytes(password.getBytes(StandardCharsets.UTF_8)).toString(); return hash; } - - - } -- Gitblit v1.9.2