|
@@ -28,6 +28,8 @@ import org.springframework.web.bind.annotation.*;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.net.URLDecoder;
|
|
|
+import java.nio.charset.StandardCharsets;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
@@ -56,7 +58,7 @@ public class SysUserController {
|
|
|
/**
|
|
|
* 新增用户操作。
|
|
|
*
|
|
|
- * @param sysUserDto 新增用户对象。
|
|
|
+ * @param sysUserDto 新增用户对象。
|
|
|
* @return 应答结果对象,包含新增用户的主键Id。
|
|
|
*/
|
|
|
@ApiOperationSupport(ignoreParameters = {
|
|
@@ -101,7 +103,7 @@ public class SysUserController {
|
|
|
/**
|
|
|
* 更新用户操作。
|
|
|
*
|
|
|
- * @param sysUserDto 更新用户对象。
|
|
|
+ * @param sysUserDto 更新用户对象。
|
|
|
* @return 应答结果对象。
|
|
|
*/
|
|
|
@ApiOperationSupport(ignoreParameters = {
|
|
@@ -159,7 +161,54 @@ public class SysUserController {
|
|
|
return ResMsg.error(CodeEnum.ARGUMENT_NULL_EXIST.getCode(), CodeEnum.ARGUMENT_NULL_EXIST.toString());
|
|
|
}
|
|
|
if (!sysUserService.changePassword(userId + "", appConfig.getDefaultUserPassword())) {
|
|
|
- return ResMsg.error(CodeEnum.DATA_NOT_EXIST.getCode(), CodeEnum.DATA_NOT_EXIST.toString());
|
|
|
+ return ResMsg.error(CodeEnum.DATA_NOT_EXIST);
|
|
|
+ }
|
|
|
+ return new ResMsg(CodeEnum.OK);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 修改密码操作。
|
|
|
+ *
|
|
|
+ * @param sysUserDto 指定用户
|
|
|
+ * @return 应答结果对象。
|
|
|
+ */
|
|
|
+ @PostMapping("/updatePassword")
|
|
|
+ public ResMsg updatePassword(@RequestBody SysUserDto sysUserDto) {
|
|
|
+ if (MyCommonUtil.existBlankArgument(sysUserDto.getUserId())) {
|
|
|
+ return ResMsg.error(CodeEnum.ARGUMENT_NULL_EXIST);
|
|
|
+ }
|
|
|
+ if (!sysUserService.changePassword(sysUserDto.getUserId() + "", sysUserDto.getPassword())) {
|
|
|
+ return ResMsg.error(CodeEnum.DATA_NOT_EXIST);
|
|
|
+ }
|
|
|
+ return new ResMsg(CodeEnum.OK);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 用户修改自己的密码 (验证新旧密码)
|
|
|
+ *
|
|
|
+ * @return 应答结果对象。
|
|
|
+ */
|
|
|
+ @PostMapping("/changePassword")
|
|
|
+ public ResMsg changePassword(@RequestBody SysUserDto sysUserDto) throws Exception {
|
|
|
+ if (MyCommonUtil.existBlankArgument(sysUserDto.getPassword(), sysUserDto.getOldPassword())) {
|
|
|
+ return ResMsg.error(CodeEnum.ARGUMENT_NULL_EXIST);
|
|
|
+ }
|
|
|
+ TokenData tokenData = TokenData.takeFromRequest();
|
|
|
+ SysUser user = sysUserService.getById(tokenData.getUserId());
|
|
|
+ //String oldPass = URLDecoder.decode(sysUserDto.getOldPassword(), StandardCharsets.UTF_8.name());
|
|
|
+ // NOTE: 第一次使用时,请务必阅读ApplicationConstant.PRIVATE_KEY的代码注释。
|
|
|
+ // 执行RsaUtil工具类中的main函数,可以生成新的公钥和私钥。
|
|
|
+ //oldPass = RsaUtil.encrypt(oldPass, ApplicationConstant.PUBLIC_KEY);
|
|
|
+ if (user == null) {
|
|
|
+ return ResMsg.error(CodeEnum.ACCOUNT_NO_PASSWORD_ERROR);
|
|
|
+ }
|
|
|
+ if (!passwordEncoder.matches(sysUserDto.getOldPassword(), user.getPassword())) {
|
|
|
+ return ResMsg.error(CodeEnum.OLD_PWD_ERROR);
|
|
|
+ }
|
|
|
+ String newPass = URLDecoder.decode(sysUserDto.getPassword(), StandardCharsets.UTF_8.name());
|
|
|
+ newPass = RsaUtil.encrypt(newPass, ApplicationConstant.PUBLIC_KEY);
|
|
|
+ if (!sysUserService.changePassword(tokenData.getUserId(), newPass)) {
|
|
|
+ return ResMsg.error(CodeEnum.USER_NOT_FIND);
|
|
|
}
|
|
|
return new ResMsg(CodeEnum.OK);
|
|
|
}
|