密码校验,参数控制修改密码

This commit is contained in:
faiz 2025-03-24 18:19:52 +08:00
parent e8ae825ba2
commit 6014c75053
2 changed files with 53 additions and 20 deletions
admin/src
layout/components
store/modules

View File

@ -97,8 +97,14 @@
</el-upload> </el-upload>
</el-dialog> </el-dialog>
<el-dialog title="修改密码" :visible.sync="dialogPWD"> <el-dialog
<el-form :rules="rules" :model="form"> title="修改密码"
:show-close="isPassword"
:close-on-press-escape="isPassword"
:close-on-click-modal="isPassword"
:visible.sync="dialogPWD"
>
<el-form ref="formName" :rules="rules" :model="form">
<el-form-item label="旧密码" prop="oldpwd"> <el-form-item label="旧密码" prop="oldpwd">
<el-input v-model="form.oldpwd" autocomplete="off" /> <el-input v-model="form.oldpwd" autocomplete="off" />
</el-form-item> </el-form-item>
@ -107,7 +113,9 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button @click="dialogPWD = false"> </el-button> <el-button v-if="isPassword" @click="dialogPWD = false"
> </el-button
>
<el-button type="primary" @click="pwd"> </el-button> <el-button type="primary" @click="pwd"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
@ -201,6 +209,7 @@ import sidebar from "@/layout/components/Sidebar/index.vue";
import avatar from "element-ui/packages/avatar"; import avatar from "element-ui/packages/avatar";
import { getQaCityList, getQaList } from "@/api/qa"; import { getQaCityList, getQaList } from "@/api/qa";
import clickoutside from "element-ui/src/utils/clickoutside"; import clickoutside from "element-ui/src/utils/clickoutside";
import { Local } from "@/utils/storage";
export default { export default {
directives: { clickoutside }, directives: { clickoutside },
components: { components: {
@ -228,6 +237,14 @@ export default {
}, },
// eslint-disable-next-line vue/order-in-Wangeditor // eslint-disable-next-line vue/order-in-Wangeditor
data() { data() {
var validatePassword = (rule, password, callback) => {
const passwordRegex = /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,16}$/;
if (!passwordRegex.test(password)) {
callback(new Error("新密码要求包含字母和数字并且长度在8到16位"));
} else {
callback();
}
};
return { return {
workstatus: false, workstatus: false,
drawer: false, drawer: false,
@ -238,6 +255,7 @@ export default {
imageUrl: false, imageUrl: false,
QaShow: true, QaShow: true,
os: [], os: [],
isPassword: true,
getQaCityList: [], getQaCityList: [],
getQaLists: [], getQaLists: [],
times: [], times: [],
@ -260,13 +278,13 @@ export default {
}, },
], ],
pwd: [ pwd: [
{ required: true, message: "请输入密码", trigger: "blur" }, { required: true, validator: validatePassword, trigger: "blur" },
{ // {
min: 6, // min: 6,
max: 20, // max: 20,
message: "长度在 6 到 20 个字符", // message: " 6 20 ",
trigger: "blur", // trigger: "blur",
}, // },
], ],
}, },
}; };
@ -277,6 +295,12 @@ export default {
this.getQaCityList = res.data; this.getQaCityList = res.data;
}); });
}, },
mounted() {
if (Local.get("userInfo").change_passwd) {
this.dialogPWD = true;
this.isPassword = false;
}
},
methods: { methods: {
color, color,
toggleSideBar() { toggleSideBar() {
@ -308,15 +332,23 @@ export default {
this.imageUrl = URL.createObjectURL(file.raw); this.imageUrl = URL.createObjectURL(file.raw);
}, },
pwd() { pwd() {
this.$axios this.$refs["formName"].validate((valid) => {
.post("/admin/admin/pwd", this.form) if (valid) {
.then((res) => { this.$axios
this.dialogPWD = false; .post("/admin/admin/pwd", this.form)
this.form = {}; .then((res) => {
}) this.dialogPWD = false;
.catch((err) => { this.isPassword = true;
console.log(err); this.form = {};
}); Local.remove("userInfo");
})
.catch((err) => {
console.log(err);
});
} else {
return false;
}
});
}, },
saveWork() { saveWork() {
this.$axios this.$axios

View File

@ -1,7 +1,7 @@
import { login, logout, getInfo } from '@/api/user' import { login, logout, getInfo } from '@/api/user'
import { getToken, setToken, removeToken } from '@/utils/auth' import { getToken, setToken, removeToken } from '@/utils/auth'
import router, { resetRouter } from '@/router' import router, { resetRouter } from '@/router'
import { Local } from '@/utils/storage'
const state = { const state = {
token: getToken(), token: getToken(),
name: '', name: '',
@ -45,6 +45,7 @@ const actions = {
const { data } = response const { data } = response
commit('SET_TOKEN', data.token) commit('SET_TOKEN', data.token)
setToken(data.token) setToken(data.token)
Local.set('userInfo', data)
resolve() resolve()
}).catch(error => { }).catch(error => {
reject(error) reject(error)