diff --git a/ad-distribute-system/system-biz/src/main/java/com/baiye/system/component/PasswordHelper.java b/ad-distribute-system/system-biz/src/main/java/com/baiye/system/component/PasswordHelper.java index 4027d49..d6d26b8 100644 --- a/ad-distribute-system/system-biz/src/main/java/com/baiye/system/component/PasswordHelper.java +++ b/ad-distribute-system/system-biz/src/main/java/com/baiye/system/component/PasswordHelper.java @@ -70,4 +70,8 @@ public class PasswordHelper { return matcher.matches(); } + public boolean matches(String oldPass, String password) { + + return passwordEncoder.matches(oldPass, password); + } } diff --git a/ad-distribute-system/system-biz/src/main/java/com/baiye/system/service/impl/SysUserServiceImpl.java b/ad-distribute-system/system-biz/src/main/java/com/baiye/system/service/impl/SysUserServiceImpl.java index 0cee29d..35ed28c 100644 --- a/ad-distribute-system/system-biz/src/main/java/com/baiye/system/service/impl/SysUserServiceImpl.java +++ b/ad-distribute-system/system-biz/src/main/java/com/baiye/system/service/impl/SysUserServiceImpl.java @@ -339,12 +339,12 @@ public class SysUserServiceImpl extends ExtendServiceImpl getSysUserInfo(@PathVariable("userId") Long userId) { SysUser sysUser = sysUserService.getById(userId); @@ -127,11 +123,14 @@ public class SysUserController { return R.ok(); } SysUserInfo sysUserInfo = SysUserConverter.INSTANCE.poToInfo(sysUser); + List roleList = sysUserRoleService.listRoles(userId); + sysUserInfo.setRoleList(roleList); return R.ok(sysUserInfo); } /** * 新增用户 + * * @param sysUserDTO userInfo * @return success/false */ @@ -139,7 +138,7 @@ public class SysUserController { @CreateOperationLogging(msg = "新增系统用户") @PreAuthorize("@per.hasPermission('system:user:add')") @Operation(summary = "新增系统用户", description = "新增系统用户") - public R addSysUser(@Validated({ Default.class, CreateGroup.class }) @RequestBody SysUserDTO sysUserDTO) { + public R addSysUser(@Validated({Default.class, CreateGroup.class}) @RequestBody SysUserDTO sysUserDTO) { SysUser user = sysUserService.getByUsername(sysUserDTO.getUsername()); if (user != null) { return R.failed(BaseResultCode.LOGIC_CHECK_ERROR, "用户名已存在"); @@ -153,22 +152,22 @@ public class SysUserController { if (passwordHelper.validateRule(rawPassword)) { return sysUserService.addSysUser(sysUserDTO) ? R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "新增系统用户失败"); - } - else { + } else { return R.failed(SystemResultCode.BAD_REQUEST, "密码格式不符合规则!"); } } /** * 修改用户个人信息 + * * @param sysUserDto userInfo * @return success/false */ @PutMapping @UpdateOperationLogging(msg = "修改系统用户") - @PreAuthorize("@per.hasPermission('system:user:edit')") + // @PreAuthorize("@per.hasPermission('system:user:edit')") @Operation(summary = "修改系统用户", description = "修改系统用户") - public R updateUserInfo(@Validated({ Default.class, UpdateGroup.class }) @RequestBody SysUserDTO sysUserDto) { + public R updateUserInfo(@Validated({Default.class, UpdateGroup.class}) @RequestBody SysUserDTO sysUserDto) { return sysUserService.updateSysUser(sysUserDto) ? R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "修改系统用户失败"); } @@ -187,6 +186,7 @@ public class SysUserController { /** * 获取用户 所拥有的角色ID + * * @param userId userId */ @GetMapping("/scope/{userId}") @@ -206,8 +206,10 @@ public class SysUserController { return R.ok(sysUserScope); } + /** * 修改用户权限信息 比如角色 数据权限等 + * * @param sysUserScope sysUserScope * @return success/false */ @@ -225,22 +227,29 @@ public class SysUserController { */ @PutMapping("/pass/{userId}") @UpdateOperationLogging(msg = "修改系统用户密码") - @PreAuthorize("@per.hasPermission('system:user:pass')") + // @PreAuthorize("@per.hasPermission('system:user:pass')") @Operation(summary = "修改系统用户密码", description = "修改系统用户密码") public R updateUserPass(@PathVariable("userId") Long userId, @RequestBody SysUserPassDTO sysUserPassDTO) { String pass = sysUserPassDTO.getPass(); + SysUser byId = sysUserService.getById(userId); + if (ObjectUtil.isNull(byId)) { + return R.failed(SystemResultCode.BAD_REQUEST, "该用户不存在"); + } + if (!passwordHelper.matches(passwordHelper.decodeAes(sysUserPassDTO.getOldPass()), byId.getPassword())) { + return R.failed(SystemResultCode.BAD_REQUEST, "修改失败,旧密码错误!"); + } if (!pass.equals(sysUserPassDTO.getConfirmPass())) { return R.failed(SystemResultCode.BAD_REQUEST, "两次密码输入不一致!"); } + // 解密明文密码 String rawPassword = passwordHelper.decodeAes(pass); // 密码规则校验 if (passwordHelper.validateRule(rawPassword)) { return sysUserService.updatePassword(userId, rawPassword) ? R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "修改用户密码失败!"); - } - else { + } else { return R.failed(SystemResultCode.BAD_REQUEST, "密码格式不符合规则!"); } } @@ -253,7 +262,7 @@ public class SysUserController { @PreAuthorize("@per.hasPermission('system:user:edit')") @Operation(summary = "批量修改用户状态", description = "批量修改用户状态") public R updateUserStatus(@NotEmpty(message = "用户ID不能为空") @RequestBody List userIds, - @NotNull(message = "用户状态不能为空") @RequestParam("status") Integer status) { + @NotNull(message = "用户状态不能为空") @RequestParam("status") Integer status) { if (!SysUserConst.Status.NORMAL.getValue().equals(status) && !SysUserConst.Status.LOCKED.getValue().equals(status)) { @@ -264,15 +273,14 @@ public class SysUserController { } @UpdateOperationLogging(msg = "修改系统用户头像") - @PreAuthorize("@per.hasPermission('system:user:edit')") + // @PreAuthorize("@per.hasPermission('system:user:edit')") @PostMapping("/avatar") @Operation(summary = "修改系统用户头像", description = "修改系统用户头像") - public R updateAvatar(@RequestParam("file") MultipartFile file, @RequestParam("userId") Long userId) { + public R updateAvatar(@RequestParam("file") MultipartFile file) { String objectName; try { - objectName = sysUserService.updateAvatar(file, userId); - } - catch (IOException e) { + objectName = sysUserService.updateAvatar(file, SecurityUtils.getCurrentUserId()); + } catch (IOException e) { log.error("修改系统用户头像异常", e); return R.failed(BaseResultCode.FILE_UPLOAD_ERROR); } diff --git a/ad-distribute-system/system-model/src/main/java/com/baiye/system/model/dto/SysUserPassDTO.java b/ad-distribute-system/system-model/src/main/java/com/baiye/system/model/dto/SysUserPassDTO.java index f05e543..0eb0294 100644 --- a/ad-distribute-system/system-model/src/main/java/com/baiye/system/model/dto/SysUserPassDTO.java +++ b/ad-distribute-system/system-model/src/main/java/com/baiye/system/model/dto/SysUserPassDTO.java @@ -16,6 +16,14 @@ import javax.validation.constraints.NotBlank; @Schema(title = "系统用户密码传输实体") public class SysUserPassDTO { + + /** + * 旧密码 + */ + @NotBlank(message = "The password cannot be empty!") + @JsonRegexDesensitize(type = RegexDesensitizationTypeEnum.ENCRYPTED_PASSWORD) + @Schema(title = "前端输入旧密码") + private String oldPass; /** * 前端传入密码 */ diff --git a/ad-distribute-system/system-model/src/main/java/com/baiye/system/model/vo/SysUserInfo.java b/ad-distribute-system/system-model/src/main/java/com/baiye/system/model/vo/SysUserInfo.java index 2b8dd42..e953934 100644 --- a/ad-distribute-system/system-model/src/main/java/com/baiye/system/model/vo/SysUserInfo.java +++ b/ad-distribute-system/system-model/src/main/java/com/baiye/system/model/vo/SysUserInfo.java @@ -1,10 +1,12 @@ package com.baiye.system.model.vo; +import com.baiye.system.model.entity.SysRole; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.io.Serializable; +import java.util.List; /** * 系统用户信息 @@ -83,4 +85,7 @@ public class SysUserInfo implements Serializable { */ @Schema(title = "创建者(父ID)") private Long whichUserId; + + + private List roleList; }