You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.4 KiB
81 lines
2.4 KiB
|
6 years ago
|
import {createMutations} from "@/store/util"
|
||
|
|
import {emptyOrDefault} from "@/util"
|
||
|
6 years ago
|
import {autoCompleteUrl} from "@/util/file"
|
||
|
|
import {getUser, setUser} from "@/util/storage"
|
||
|
6 years ago
|
import {mutations as tagsViewMutations} from "@/layout/store/tagsView"
|
||
|
6 years ago
|
import {login, logout} from '@/api/account'
|
||
|
6 years ago
|
|
||
|
|
//刷新时从本地存储中获取用户信息
|
||
|
|
const user = getUser()
|
||
|
|
|
||
|
|
const state = {
|
||
|
|
//是否在退出的过程中,避免重复弹框
|
||
|
6 years ago
|
prepareLogout: false,
|
||
|
6 years ago
|
|
||
|
|
/*用户基本信息*/
|
||
|
6 years ago
|
id: emptyOrDefault(user.id, null),
|
||
|
|
name: emptyOrDefault(user.name),
|
||
|
6 years ago
|
roleName: emptyOrDefault(user.roleName),
|
||
|
|
deptName: emptyOrDefault(user.deptName),
|
||
|
6 years ago
|
avatar: emptyOrDefault(user.avatar),
|
||
|
6 years ago
|
admin: emptyOrDefault(user.admin, false),
|
||
|
6 years ago
|
token: emptyOrDefault(user.token),
|
||
|
|
resources: emptyOrDefault(user.resources, {})
|
||
|
6 years ago
|
}
|
||
|
|
|
||
|
6 years ago
|
const mutations = createMutations(state, true)
|
||
|
6 years ago
|
|
||
|
|
const actions = {
|
||
|
|
login({commit, dispatch}, userInfo) {
|
||
|
|
const {username, password} = userInfo
|
||
|
6 years ago
|
return login
|
||
|
|
.request({username: username.trim(), password})
|
||
|
|
.then(({data: user}) => {
|
||
|
6 years ago
|
if (user.admin === true) user.roleName = '超级管理员'
|
||
|
|
user.avatar = autoCompleteUrl(user.avatar)
|
||
|
|
commit('$all', user)
|
||
|
|
setUser(user)
|
||
|
6 years ago
|
return dispatch('socket/init', null, {root: true})
|
||
|
6 years ago
|
})
|
||
|
6 years ago
|
},
|
||
|
|
|
||
|
|
logout({commit, state, dispatch}) {
|
||
|
|
return new Promise((resolve, reject) => {
|
||
|
6 years ago
|
if (state.prepareLogout) return Promise.reject()
|
||
|
6 years ago
|
commit('prepareLogout', true)
|
||
|
6 years ago
|
logout
|
||
|
|
.request(state.token)
|
||
|
6 years ago
|
.then(() => {
|
||
|
6 years ago
|
commit('resource/init', false, {root: true})
|
||
|
6 years ago
|
return Promise.all([
|
||
|
|
dispatch('socket/close', null, {root: true}),
|
||
|
|
dispatch('removeUser'),
|
||
|
6 years ago
|
tagsViewMutations.delAllTagAndCache()
|
||
|
6 years ago
|
])
|
||
|
|
})
|
||
|
|
.then(() => {
|
||
|
6 years ago
|
resolve()
|
||
|
|
window.location.reload()
|
||
|
|
})
|
||
|
|
.catch(error => reject(error))
|
||
|
6 years ago
|
.finally(() => commit('prepareLogout', false))
|
||
|
6 years ago
|
})
|
||
|
|
},
|
||
|
|
|
||
|
|
refresh({state}) {
|
||
|
|
setUser(state)
|
||
|
|
},
|
||
|
|
|
||
|
|
removeUser({commit}) {
|
||
|
6 years ago
|
commit('$all', {resources: {}})
|
||
|
6 years ago
|
setUser()
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
export default {
|
||
|
|
namespaced: true,
|
||
|
|
state,
|
||
|
|
mutations,
|
||
|
|
actions
|
||
|
|
}
|