feat: 用户修改密码

This commit is contained in:
dhb52 2024-06-09 01:33:48 +08:00
parent 6e2541ebba
commit 2d430d6c32
4 changed files with 50 additions and 4 deletions

View File

@ -5,6 +5,7 @@ import com.aizuda.snailjob.server.web.annotation.LoginRequired;
import com.aizuda.snailjob.server.web.annotation.LoginUser;
import com.aizuda.snailjob.server.web.annotation.RoleEnum;
import com.aizuda.snailjob.server.web.model.base.PageResult;
import com.aizuda.snailjob.server.web.model.request.SystemUpdateUserPasswordRequestVO;
import com.aizuda.snailjob.server.web.model.request.SystemUserQueryVO;
import com.aizuda.snailjob.server.web.model.request.SystemUserRequestVO;
import com.aizuda.snailjob.server.web.model.request.UserSessionVO;
@ -83,4 +84,11 @@ public class SystemUserController {
}
return systemUserService.delUser(id);
}
@LoginRequired
@PutMapping("/update-user-password")
public void updateUserPassword(@RequestBody @Valid SystemUpdateUserPasswordRequestVO requestVO) {
systemUserService.updateUserPassword(requestVO);
}
}

View File

@ -0,0 +1,21 @@
package com.aizuda.snailjob.server.web.model.request;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import org.springframework.web.bind.annotation.PutMapping;
/**
* @author dhb52
* @date 2024-06-09
* @since 1.0.0
*/
@Data
public class SystemUpdateUserPasswordRequestVO {
@NotBlank(message = "原密码不能为空", groups = PutMapping.class)
private String oldPassword;
@NotBlank(message = "新密码不能为空", groups = PutMapping.class)
private String newPassword;
}

View File

@ -1,6 +1,7 @@
package com.aizuda.snailjob.server.web.service;
import com.aizuda.snailjob.server.web.model.base.PageResult;
import com.aizuda.snailjob.server.web.model.request.SystemUpdateUserPasswordRequestVO;
import com.aizuda.snailjob.server.web.model.request.SystemUserQueryVO;
import com.aizuda.snailjob.server.web.model.request.SystemUserRequestVO;
import com.aizuda.snailjob.server.web.model.request.UserSessionVO;
@ -34,4 +35,7 @@ public interface SystemUserService {
boolean delUser(Long id);
List<PermissionsResponseVO> getSystemUserPermissionByUserName(Long id);
void updateUserPassword(SystemUpdateUserPasswordRequestVO requestVO);
}

View File

@ -9,16 +9,14 @@ import com.aizuda.snailjob.common.core.util.StreamUtils;
import com.aizuda.snailjob.server.common.exception.SnailJobServerException;
import com.aizuda.snailjob.server.web.annotation.RoleEnum;
import com.aizuda.snailjob.server.web.model.base.PageResult;
import com.aizuda.snailjob.server.web.model.request.SystemUserQueryVO;
import com.aizuda.snailjob.server.web.model.request.SystemUserRequestVO;
import com.aizuda.snailjob.server.web.model.request.UserPermissionRequestVO;
import com.aizuda.snailjob.server.web.model.request.UserSessionVO;
import com.aizuda.snailjob.server.web.model.request.*;
import com.aizuda.snailjob.server.web.model.response.PermissionsResponseVO;
import com.aizuda.snailjob.server.web.model.response.SystemUserResponseVO;
import com.aizuda.snailjob.server.web.service.SystemUserService;
import com.aizuda.snailjob.server.web.service.convert.NamespaceResponseVOConverter;
import com.aizuda.snailjob.server.web.service.convert.PermissionsResponseVOConverter;
import com.aizuda.snailjob.server.web.service.convert.SystemUserResponseVOConverter;
import com.aizuda.snailjob.server.web.util.UserSessionUtils;
import com.aizuda.snailjob.template.datasource.persistence.mapper.NamespaceMapper;
import com.aizuda.snailjob.template.datasource.persistence.mapper.SystemUserMapper;
import com.aizuda.snailjob.template.datasource.persistence.mapper.SystemUserPermissionMapper;
@ -291,6 +289,21 @@ public class SystemUserServiceImpl implements SystemUserService {
return response;
}
@Override
public void updateUserPassword(SystemUpdateUserPasswordRequestVO requestVO) {
Long userId = UserSessionUtils.currentUserSession().getId();
SystemUser systemUser = systemUserMapper.selectOne(
new LambdaQueryWrapper<SystemUser>().eq(SystemUser::getId, userId));
if (Objects.isNull(systemUser)) {
throw new SnailJobServerException("该用户不存在");
}
if (!SecureUtil.sha256(requestVO.getOldPassword()).equals(systemUser.getPassword())) {
throw new SnailJobServerException("用户原密码错误");
}
systemUser.setPassword(SecureUtil.sha256(requestVO.getNewPassword()));
Assert.isTrue(1 == systemUserMapper.updateById(systemUser), () -> new SnailJobServerException("更新用户密码失败"));
}
@Override
@Transactional
public boolean delUser(final Long id) {