Files
ebiz-ai-knowledge-manage/src/store/modules/user.js

153 lines
3.6 KiB
JavaScript

import { login, logout, getInfo } from '@/api/app/user'
import { getToken, setToken, removeToken } from '@/assets/js/utils/auth'
const state = {
token: getToken(),
name: '',
avatar: '',
roles: []
}
const mutations = {
SET_TOKEN: (state, token) => {
state.token = token
},
SET_NAME: (state, name) => {
state.name = name
},
SET_AVATAR: (state, avatar) => {
state.avatar = avatar
},
SET_ROLES: (state, roles) => {
state.roles = roles
}
}
const actions = {
getSid({ commit }, data) {
commit('SET_SID', data)
},
setGroupList({ commit }, data) {
commit('SET_GROUPLIST', data)
},
setToken({ commit }, data) {
commit('SET_TOKEN', data)
},
removeRoles({ commit }) {
commit('SET_ROLES', [])
},
// user login
login({ commit }, userInfo) {
const { userName, password, captcha, captchaKey } = userInfo
return new Promise((resolve, reject) => {
login({
userName: userName.trim(),
password: password,
captcha: captcha ? captcha : undefined,
captchaKey: captchaKey ? captchaKey : undefined
})
.then(res => {
let numberResult = Number(res.content.result)
if (numberResult !== 0) {
switch (numberResult) {
case 51001:
// 需要发送 短信验证码
resolve({
code: numberResult
})
break
case 50024:
// 需要验证码
resolve({
code: numberResult,
message: res.content.resultMessage
})
break
case 51003:
// 需要验证码
resolve({
code: numberResult,
message: res.content.resultMessage
})
break
case 51004:
// 临期提示
resolve({
...res.content,
code: numberResult
})
break
default:
reject(res.content)
break
}
} else {
setToken(res.content.content)
commit('SET_TOKEN', res.content.content)
resolve({
...res.content,
code: 0
})
}
})
.catch(error => {
reject(error)
})
})
},
// get user info
getInfo({ commit, state }) {
return new Promise((resolve, reject) => {
getInfo(state.token)
.then(res => {
let roles = res.content.content.roleCodes || []
if (roles && roles.length > 0) {
// 验证返回的roles是否是一个非空数组
commit('SET_ROLES', roles)
}
sessionStorage.setItem(
'userInfo',
JSON.stringify(res.content.content)
)
commit('SET_NAME', res.content.content.userName)
resolve(res)
})
.catch(error => {
reject(error)
})
})
},
// user logout
logout({ commit, state }) {
return new Promise((resolve, reject) => {
logout(state.token)
.then(() => {
commit('SET_TOKEN', '')
removeToken()
resolve()
})
.catch(error => {
reject(error)
})
})
},
// remove token
resetToken({ commit }) {
return new Promise(resolve => {
commit('SET_TOKEN', '')
removeToken()
resolve()
})
}
}
export default {
namespaced: true,
state,
mutations,
actions
}