优化-首次登录重置密码

This commit is contained in:
bb_pan 2025-04-22 10:03:49 +08:00
parent 7cad098111
commit f50ed92537
5 changed files with 56 additions and 20 deletions

View File

@ -112,5 +112,12 @@ export function loginByMall(data) {
}) })
} }
// 验证密码
export function checkPasswordStatusApi(data) {
return request({
url: '/auth/checkPasswordStatus',
method: 'post',
data
})
}

View File

@ -2,6 +2,7 @@ import { login, logout, getInfo, refreshToken, checkCode, loginByMall } from '@/
import { getToken, setToken, setExpiresIn, removeToken } from '@/utils/auth' import { getToken, setToken, setExpiresIn, removeToken } from '@/utils/auth'
import { Notification, MessageBox, Message, Loading } from 'element-ui' import { Notification, MessageBox, Message, Loading } from 'element-ui'
import { encrypt } from '@/utils/jsencrypt' import { encrypt } from '@/utils/jsencrypt'
import { checkPasswordStatus } from '@/utils/checkPw'
const user = { const user = {
state: { state: {
@ -48,7 +49,6 @@ const user = {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
login(username, password, code, uuid).then(res => { login(username, password, code, uuid).then(res => {
let data = res.data let data = res.data
localStorage.setItem('isCode', data.code || '')
setToken(data.access_token) setToken(data.access_token)
commit('SET_TOKEN', data.access_token) commit('SET_TOKEN', data.access_token)
localStorage.setItem('token', data.access_token) localStorage.setItem('token', data.access_token)
@ -112,7 +112,12 @@ const user = {
// 获取用户信息 // 获取用户信息
GetInfo({ commit, state }) { GetInfo({ commit, state }) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
getInfo().then(res => { getInfo().then(async res => {
const href = window.location.href
if (!href.includes('resetPassword') && JSON.parse(localStorage.getItem('isReset'))) {
await checkPasswordStatus()
}
const user = res.user const user = res.user
/* 存储当前登录用户的userId */ /* 存储当前登录用户的userId */
sessionStorage.setItem('userId', user.userId) sessionStorage.setItem('userId', user.userId)
@ -155,7 +160,8 @@ const user = {
commit('SET_TOKEN', '') commit('SET_TOKEN', '')
commit('SET_ROLES', []) commit('SET_ROLES', [])
commit('SET_PERMISSIONS', []) commit('SET_PERMISSIONS', [])
localStorage.removeItem('isCode') localStorage.removeItem('username')
localStorage.removeItem('pw')
removeToken() removeToken()
resolve() resolve()
}).catch(error => { }).catch(error => {

View File

@ -0,0 +1,23 @@
import { Message } from 'element-ui'
import { checkPasswordStatusApi } from '@/api/login'
export const checkPasswordStatus = () => {
const username = localStorage.getItem('username')
const password = localStorage.getItem('pw')
try {
return new Promise(async (resolve, reject) => {
const res = await checkPasswordStatusApi({ username, password })
if (res.data == true) {
Message.error(res.msg)
localStorage.setItem('isReset', JSON.stringify(true))
resolve(false)
location.href = '/resetPassword'
} else {
localStorage.setItem('isReset', JSON.stringify(false))
resolve(true)
}
})
} catch (error) {
console.log('🚀 ~ checkPasswordStatus ~ error:', error)
}
}

View File

@ -281,6 +281,7 @@
import { getCodeImg, sendCode } from '@/api/login' import { getCodeImg, sendCode } from '@/api/login'
import Cookies from 'js-cookie' import Cookies from 'js-cookie'
import { encrypt, decrypt } from '@/utils/jsencrypt' import { encrypt, decrypt } from '@/utils/jsencrypt'
import { checkPasswordStatus } from '@/utils/checkPw'
export default { export default {
name: 'Login', name: 'Login',
@ -518,17 +519,16 @@ export default {
} }
this.$store this.$store
.dispatch('Login', this.loginForm) .dispatch('Login', this.loginForm)
.then(() => { .then(async () => {
//
// if (localStorage.getItem('isCode') == 1) {
// this.$router.push({ path: '/resetPassword' }).catch(() => {})
// } else {
// this.$router.push({ path: '/' }).catch(() => {})
// }
this.$router.push({ path: '/' }).catch(() => {})
localStorage.setItem('notice', true) localStorage.setItem('notice', true)
const username = this.loginForm.username.trim()
const password = encrypt(this.loginForm.password)
localStorage.setItem('username', username)
localStorage.setItem('pw', password)
const res = await checkPasswordStatus()
console.log('🚀 ~ .then ~ res:', res)
this.$router.push({ path: '/' }).catch(() => {})
}) })
.catch(() => { .catch(() => {
this.loading = false this.loading = false

View File

@ -4,14 +4,14 @@
<div class="form-bar"> <div class="form-bar">
<h3 class="title">请重置登录密码</h3> <h3 class="title">请重置登录密码</h3>
<el-form ref="form" :model="user" :rules="rules"> <el-form ref="form" :model="user" :rules="rules">
<el-form-item label="旧密码" prop="oldPassword"> <!-- <el-form-item label="旧密码" prop="oldPassword">
<el-input <el-input
v-model="user.oldPassword" v-model="user.oldPassword"
placeholder="请输入旧密码" placeholder="请输入旧密码"
type="password" type="password"
show-password show-password
/> />
</el-form-item> </el-form-item> -->
<el-form-item label="新密码" prop="newPassword"> <el-form-item label="新密码" prop="newPassword">
<el-input <el-input
v-model="user.newPassword" v-model="user.newPassword"
@ -46,7 +46,7 @@
</template> </template>
<script> <script>
import { updateUserPwd } from '@/api/system/user' import { updateUserPwd, resetUserPwd } from '@/api/system/user'
import { validPassword } from '@/utils/validate' import { validPassword } from '@/utils/validate'
import { encrypt } from '@/utils/jsencrypt.js' import { encrypt } from '@/utils/jsencrypt.js'
@ -120,9 +120,9 @@ export default {
if (valid) { if (valid) {
const oldPassword = encrypt(this.user.oldPassword) const oldPassword = encrypt(this.user.oldPassword)
const newPassword = encrypt(this.user.newPassword) const newPassword = encrypt(this.user.newPassword)
updateUserPwd(oldPassword, newPassword).then((response) => { resetUserPwd(0, newPassword).then((response) => {
this.$modal.msgSuccess('修改成功') this.$modal.msgSuccess('修改成功, 请重新登录')
// //
this.$store.dispatch('LogOut').then(() => { this.$store.dispatch('LogOut').then(() => {
location.href = '/login' location.href = '/login'
}) })