feat: 添加用户自身修改密码

This commit is contained in:
bunny 2024-10-22 16:40:33 +08:00
parent f226f4ad98
commit 162d2e7782
4 changed files with 60 additions and 12 deletions

View File

@ -45,6 +45,7 @@ public enum ResultCodeEnum {
DATA_NOT_EXIST(206, "数据不存在"),
USER_IS_EMPTY(206, "用户不存在"),
FILE_NOT_EXIST(206, "文件不存在"),
NEW_PASSWORD_SAME_OLD_PASSWORD(206, "新密码不能和旧密码相同"),
// 身份过期 208
LOGIN_AUTH(208, "请先登陆"),

View File

@ -77,6 +77,20 @@ public class UserController {
return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
}
@Operation(summary = "更新本地用户密码", description = "更新本地用户密码")
@PutMapping("noManage/updateUserPasswordByLocalUser")
public Result<String> updateUserPasswordByLocalUser(String password) {
userService.updateUserPasswordByLocalUser(password);
return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
}
@Operation(summary = "管理员修改用户密码", description = "管理员修改管理员用户密码")
@PutMapping("updateUserPasswordByAdmin")
public Result<String> updateUserPasswordByAdmin(@Valid @RequestBody AdminUserUpdateWithPasswordDto dto) {
userService.updateUserPasswordByAdmin(dto);
return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
}
@Operation(summary = "修改用户状态", description = "管理员修改用户状态")
@PutMapping("updateUserStatusByAdmin")
public Result<String> updateUserStatusByAdmin(@Valid @RequestBody AdminUserUpdateUserStatusDto dto) {
@ -84,13 +98,6 @@ public class UserController {
return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
}
@Operation(summary = "修改管理员用户密码", description = "管理员修改管理员用户密码")
@PutMapping("updateUserPasswordByAdmin")
public Result<String> updateUserPasswordByAdmin(@Valid @RequestBody AdminUserUpdateWithPasswordDto dto) {
userService.updateUserPasswordByAdmin(dto);
return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
}
@Operation(summary = "修改用户头像", description = "管理员修改用户头像")
@PutMapping("uploadAvatarByAdmin")
public Result<String> uploadAvatarByAdmin(@Valid UserUpdateWithAvatarDto dto) {

View File

@ -129,4 +129,11 @@ public interface UserService extends IService<AdminUser> {
* @param dto 用户信息
*/
void updateAdminUserByLocalUser(AdminUserUpdateByLocalUserDto dto);
/**
* * 更新本地用户密码
*
* @param password 更新本地用户密码
*/
void updateUserPasswordByLocalUser(@Valid String password);
}

View File

@ -202,15 +202,15 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, AdminUser> implemen
AdminUser adminUser = getOne(Wrappers.<AdminUser>lambdaQuery().eq(AdminUser::getId, userId));
// 判断是否存在这个用户
if (adminUser == null) {
throw new BunnyException(ResultCodeEnum.USER_IS_EMPTY);
}
if (adminUser == null) throw new BunnyException(ResultCodeEnum.USER_IS_EMPTY);
// 判断新密码是否与旧密码相同
if (adminUser.getPassword().equals(md5Password)) {
if (adminUser.getPassword().equals(md5Password))
throw new BunnyException(ResultCodeEnum.UPDATE_NEW_PASSWORD_SAME_AS_OLD_PASSWORD);
}
// 删除Redis中登录用户信息
redisTemplate.delete(RedisUserConstant.getAdminLoginInfoPrefix(adminUser.getEmail()));
// 更新用户密码
adminUser = new AdminUser();
adminUser.setPassword(md5Password);
@ -348,6 +348,39 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, AdminUser> implemen
updateById(adminUser);
}
/**
* * 更新本地用户密码
*
* @param password 更新本地用户密码
*/
@Override
public void updateUserPasswordByLocalUser(@Valid String password) {
// 根据当前用户查询用户信息
Long userId = BaseContext.getUserId();
AdminUser adminUser = getOne(Wrappers.<AdminUser>lambdaQuery().eq(AdminUser::getId, userId));
// 判断用户是否存在
if (adminUser == null) throw new BunnyException(ResultCodeEnum.USER_IS_EMPTY);
// 数据库中的密码
String dbPassword = adminUser.getPassword();
password = DigestUtils.md5DigestAsHex(password.getBytes());
// 判断数据库中密码是否和更新用户密码相同
if (dbPassword.equals(password)) throw new BunnyException(ResultCodeEnum.NEW_PASSWORD_SAME_OLD_PASSWORD);
// 删除Redis中登录用户信息
redisTemplate.delete(RedisUserConstant.getAdminLoginInfoPrefix(adminUser.getEmail()));
// 更新用户密码
adminUser = new AdminUser();
adminUser.setId(userId);
adminUser.setPassword(password);
updateById(adminUser);
}
/**
* * 用户信息 服务实现类
*