diff --git a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/web/UserInfoController.java b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/web/UserInfoController.java index 90e3af6e..254e5981 100644 --- a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/web/UserInfoController.java +++ b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/web/UserInfoController.java @@ -166,6 +166,28 @@ public class UserInfoController { return DocResponseJson.ok(password); } + @AuthMan + @PostMapping("/updateSelfPwd") + public ResponseJson updateSelfPwd(String currentPwd, String newPwd) { + DocUserDetails currentUser = DocUserUtil.getCurrentUser(); + // 检查密码是否正确 + if (StringUtils.isBlank(currentPwd) || StringUtils.isBlank(newPwd)) { + return DocResponseJson.warn("密码不能为空"); + } + UserInfo userInfo = userInfoService.getById(currentUser.getUserId()); + String oldPasswordInput = DigestUtils.md5DigestAsHex(currentPwd.getBytes()); + if (!Objects.equals(oldPasswordInput, userInfo.getPassword())) { + return DocResponseJson.warn("当前密码密码错误"); + } + String newPassword = DigestUtils.md5DigestAsHex(newPwd.getBytes()); + UserInfo userInfoUp = new UserInfo(); + userInfoUp.setId(currentUser.getUserId()); + userInfoUp.setPassword(newPassword); + userInfoUp.setUpdateTime(new Date()); + userInfoService.updateById(userInfoUp); + return DocResponseJson.ok(); + } + @AuthMan(DocAuthConst.USER_MANAGE) @PostMapping("/delete") public ResponseJson delete(Long id) { diff --git a/zyplayer-doc-ui/console-ui/src/common/api/console.js b/zyplayer-doc-ui/console-ui/src/common/api/console.js index 9936b202..67643da7 100644 --- a/zyplayer-doc-ui/console-ui/src/common/api/console.js +++ b/zyplayer-doc-ui/console-ui/src/common/api/console.js @@ -10,6 +10,9 @@ export default { }, getSelfUserInfo: data => { return request({url: '/user/info/selfInfo', method: 'post', data: Qs.stringify(data)}); + }, + updateSelfPwd: data => { + return request({url: '/user/info/updateSelfPwd', method: 'post', data: Qs.stringify(data)}); }, selfInfoWithAuth: data => { return request({url: '/user/info/selfInfoWithAuth', method: 'post', data: Qs.stringify(data)}); diff --git a/zyplayer-doc-ui/console-ui/src/views/user/MyInfo.vue b/zyplayer-doc-ui/console-ui/src/views/user/MyInfo.vue index 29010ec4..74593480 100644 --- a/zyplayer-doc-ui/console-ui/src/views/user/MyInfo.vue +++ b/zyplayer-doc-ui/console-ui/src/views/user/MyInfo.vue @@ -1,12 +1,15 @@ @@ -25,7 +44,18 @@ export default { data() { return { - userInfo: {} + userInfo: {}, + updatePasswordDialogVisible: false, + updatePassword: { + currentPwd: '', + newPwd: '', + repeatPwd: '', + }, + updatePasswordRules: { + currentPwd: [{validator: this.validateCurrentPwd, trigger: 'blur'}], + newPwd: [{validator: this.validateNewPwd, trigger: 'blur'}], + repeatPwd: [{validator: this.validateRepeatPwd, trigger: 'blur'}], + }, }; }, mounted: function () { @@ -37,6 +67,54 @@ this.userInfo = json.data; }); }, + showUpdatePasswordDialog() { + this.updatePasswordDialogVisible = true; + }, + submitUpdatePasswordForm() { + this.$refs.passwordForm.validate((valid) => { + if (!valid) { + return false; + } + consoleApi.updateSelfPwd(this.updatePassword).then(json => { + this.$message.success("修改成功!请重新登录"); + setTimeout(() => { + consoleApi.userLogout().then(() => { + location.reload(); + }).catch(e => { + console.log("退出登录失败", e); + }); + }, 500); + }); + }); + }, + validateCurrentPwd(rule, value, callback) { + if (value === '') { + callback(new Error('请输入密码')); + } else { + callback(); + } + }, + validateNewPwd(rule, value, callback) { + if (value === '') { + callback(new Error('请输入新密码')); + } else { + if (this.updatePassword.newPwd !== '') { + this.$refs.passwordForm.validateField('repeatPwd'); + } + callback(); + } + }, + validateRepeatPwd(rule, value, callback) { + if (value === '') { + callback(new Error('请再次输入新密码')); + } else { + if (this.updatePassword.repeatPwd !== this.updatePassword.newPwd) { + callback(new Error('两次输入的密码不一致')); + } else { + callback(); + } + } + }, } }