From 2af1fbd254995a0240afbd9bef3022e5bbbc603f Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期一, 04 三月 2024 09:39:56 +0800 Subject: [PATCH] 初始化 --- src/permission.js | 6 ++ src/api/system/user.js | 6 + src/views/login.vue | 91 ++++++++++++++++++++++++++--- src/views/system/user/profile/resetPwd.vue | 19 +++++- 4 files changed, 106 insertions(+), 16 deletions(-) diff --git a/src/api/system/user.js b/src/api/system/user.js index f2f76ef..d2f9d92 100644 --- a/src/api/system/user.js +++ b/src/api/system/user.js @@ -88,10 +88,11 @@ } // 鐢ㄦ埛瀵嗙爜閲嶇疆 -export function updateUserPwd(oldPassword, newPassword) { +export function updateUserPwd(oldPassword, newPassword, firstLogin) { const data = { oldPassword, - newPassword + newPassword, + firstLogin } return request({ url: '/system/user/profile/updatePwd', @@ -133,3 +134,4 @@ method: 'get' }) } + diff --git a/src/permission.js b/src/permission.js index c568979..45c6285 100644 --- a/src/permission.js +++ b/src/permission.js @@ -16,6 +16,12 @@ to.meta.title && store.dispatch('settings/setTitle', to.meta.title) /* has token*/ if (to.path === '/login') { + // 鏂板鍒ゆ柇鈥斺�斿綋鍓嶄綅缃湭鐧诲綍椤甸潰鏃讹細濡傛灉firstLogin鍊间负0 + if(localStorage.getItem("firstLogin") == 0) { + // 鍘绘帀token + setToken("") + } + // 涓嶄负true鏃朵笉鍙� next({ path: '/' }) NProgress.done() } else if (whiteList.indexOf(to.path) !== -1) { diff --git a/src/views/login.vue b/src/views/login.vue index 95cff50..cf7c897 100644 --- a/src/views/login.vue +++ b/src/views/login.vue @@ -2,6 +2,7 @@ <div class="login"> <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form"> <h3 class="title">鑻ヤ緷鍚庡彴绠$悊绯荤粺</h3> + <el-form-item prop="username"> <el-input v-model="loginForm.username" @@ -54,21 +55,53 @@ </div> </el-form-item> </el-form> - <!-- 搴曢儴 --> - <div class="el-login-footer"> - <span>Copyright 漏 2018-2023 ruoyi.vip All Rights Reserved.</span> - </div> + + <el-dialog title="涓轰簡鎮ㄧ殑璐﹀彿瀹夊叏,棣栨鐧婚檰璇蜂慨鏀瑰瘑鐮�" :visible.sync="loginInfo.firstLogin==0?true:false"> + <el-form> + <el-form-item label="鏂板瘑鐮�"> + <el-input v-model="newPassword" autocomplete="off"></el-input> + </el-form-item> + <el-form-item label="璇风‘璁ゅ瘑鐮�"> + <el-input v-model="confirmPassword" autocomplete="off"></el-input> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" @click="updatePwd">纭� 瀹�</el-button> + </div> + </el-dialog> </div> + + </template> <script> -import { getCodeImg } from "@/api/login"; +import { getCodeImg ,getInfo} from "@/api/login"; import Cookies from "js-cookie"; import { encrypt, decrypt } from '@/utils/jsencrypt' +import { updateUserPwd } from "@/api/system/user"; export default { + //鏂板瀵硅薄銆佸彉閲� name: "Login", data() { + const equalToPassword = (rule, value, callback) => { + if (this.newPassword !== value) { + callback(new Error("涓ゆ杈撳叆鐨勫瘑鐮佷笉涓�鑷�")); + } else { + callback(); + } + }; + const validatePassword = (rule, value, callback) => { + var regex = /(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[\W_])/; + if (value.length < 8 || value.length > 10) { + callback(new Error('璇疯緭鍏�8-10浣嶅ぇ鍐欏瓧姣�+灏忓啓瀛楁瘝+鏁板瓧+鐗规畩瀛楃')); + } + else if (!regex.test(value)) { + callback(new Error("璇疯緭鍏�8-10浣嶅ぇ鍐欏瓧姣�+灏忓啓瀛楁瘝+鏁板瓧+鐗规畩瀛楃")); + } else { + callback(); + } + }; return { codeUrl: "", loginForm: { @@ -78,6 +111,11 @@ code: "", uuid: "" }, + loginInfo: { + firstLogin: 1 + }, + newPassword: undefined, + confirmPassword: undefined, loginRules: { username: [ { required: true, trigger: "blur", message: "璇疯緭鍏ユ偍鐨勮处鍙�" } @@ -86,6 +124,16 @@ { required: true, trigger: "blur", message: "璇疯緭鍏ユ偍鐨勫瘑鐮�" } ], code: [{ required: true, trigger: "change", message: "璇疯緭鍏ラ獙璇佺爜" }] + }, + rules: { + newPassword: [ + { required: true, message: "鏂板瘑鐮佷笉鑳戒负绌�", trigger: "blur" }, + { required: true, validator: validatePassword, trigger: "blur" } + ], + confirmPassword: [ + { required: true, message: "纭瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" }, + { required: true, validator: equalToPassword, trigger: "blur" } + ] }, loading: false, // 楠岃瘉鐮佸紑鍏� @@ -131,6 +179,7 @@ this.$refs.loginForm.validate(valid => { if (valid) { this.loading = true; + if (this.loginForm.rememberMe) { Cookies.set("username", this.loginForm.username, { expires: 30 }); Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 }); @@ -140,19 +189,39 @@ Cookies.remove("password"); Cookies.remove('rememberMe'); } - this.$store.dispatch("Login", this.loginForm).then(() => { - this.$router.push({ path: this.redirect || "/" }).catch(()=>{}); + + this.$store.dispatch("Login", this.loginForm).then((res) => { + getInfo().then(loginInfo => { + this.loginInfo = loginInfo.user + //濡傛灉杩斿洖涓�1姝e父璺宠浆 + if(this.loginInfo.firstLogin == 1){ + this.$router.push({ path: this.redirect || "/" }).catch(()=>{}); + } else { + localStorage.setItem('firstLogin',0) + } + }).catch(()=>{}) }).catch(() => { this.loading = false; if (this.captchaEnabled) { this.getCode(); } }); + } + }); + }, + // 鏂板淇敼鏂规硶 + updatePwd(){ + updateUserPwd("", this.newPassword, 0).then(response => { + // 淇敼瀹屾垚灏唂irstLogin鏀逛负1 + localStorage.setItem('firstLogin', 1) + this.$modal.msgSuccess("淇敼鎴愬姛"); + this.$router.push({ path: this.redirect || "/" }).catch(() => {}); + }).catch((e) => { + console.info(e) + }); } - }); - } - } -}; + } + }; </script> <style rel="stylesheet/scss" lang="scss"> diff --git a/src/views/system/user/profile/resetPwd.vue b/src/views/system/user/profile/resetPwd.vue index 64e8f8c..1a729dd 100644 --- a/src/views/system/user/profile/resetPwd.vue +++ b/src/views/system/user/profile/resetPwd.vue @@ -28,6 +28,17 @@ callback(); } }; + const validatePassword = (rule, value, callback) => { + var regex = /(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[\W_])/; + if (value.length < 8 || value.length > 10) { + callback(new Error('璇疯緭鍏�8-10浣嶅ぇ鍐欏瓧姣�+灏忓啓瀛楁瘝+鏁板瓧+鐗规畩瀛楃')); + } + else if (!regex.test(value)) { + callback(new Error("璇疯緭鍏�8-10浣嶅ぇ鍐欏瓧姣�+灏忓啓瀛楁瘝+鏁板瓧+鐗规畩瀛楃")); + } else { + callback(); + } + }; return { user: { oldPassword: undefined, @@ -41,7 +52,7 @@ ], newPassword: [ { required: true, message: "鏂板瘑鐮佷笉鑳戒负绌�", trigger: "blur" }, - { min: 6, max: 20, message: "闀垮害鍦� 6 鍒� 20 涓瓧绗�", trigger: "blur" } + { required: true, validator: validatePassword, trigger: "blur" } ], confirmPassword: [ { required: true, message: "纭瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" }, @@ -54,8 +65,10 @@ submit() { this.$refs["form"].validate(valid => { if (valid) { - updateUserPwd(this.user.oldPassword, this.user.newPassword).then(response => { - this.$modal.msgSuccess("淇敼鎴愬姛"); + // 淇敼updateUserPwd鏂规硶鐨勫叆鍙� + // firstLogin鍊间负0鏃朵笉鏍¢獙鏃у瘑鐮侊紝浼犲叆1鏍¢獙锛屼笉褰卞搷鍔熻兘 + updateUserPwd(this.user.oldPassword, this.user.newPassword, 1).then(response => { + this.$modal.msgSuccess("淇敼鎴愬姛"); }); } }); -- Gitblit v1.8.0