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.
66 lines
1.6 KiB
66 lines
1.6 KiB
import {createMutations} from "@/store/util"
|
|
import {emptyOrDefault} from "@/util"
|
|
import {getUser, setUser} from "@/util/storage"
|
|
import {mutations as tagsViewMutations} from "@/layout/store/tagsView"
|
|
import {elError} from "@/util/message"
|
|
|
|
//刷新时从本地存储中获取用户信息
|
|
const user = getUser()
|
|
|
|
const state = {
|
|
//是否在退出的过程中,避免重复弹框
|
|
prepareLogout: false,
|
|
|
|
/*用户基本信息*/
|
|
id: emptyOrDefault(user.id, null),
|
|
name: emptyOrDefault(user.name),
|
|
avatar: emptyOrDefault(user.avatar),
|
|
admin: emptyOrDefault(user.admin, false),
|
|
token: emptyOrDefault(user.token),
|
|
resources: emptyOrDefault(user.resources, {})
|
|
}
|
|
|
|
const mutations = createMutations(state, true)
|
|
|
|
const actions = {
|
|
login({commit, dispatch}, userInfo) {
|
|
const {username, password} = userInfo
|
|
|
|
const user = {id: 1, admin: true, name: username, avatar: null, token: 'token'}
|
|
|
|
commit('$all', user)
|
|
setUser(user)
|
|
|
|
return Promise.resolve()
|
|
},
|
|
|
|
logout({commit, state, dispatch}) {
|
|
if (state.prepareLogout) return Promise.reject()
|
|
|
|
commit('prepareLogout', true)
|
|
|
|
return Promise.all([
|
|
dispatch('removeUser'),
|
|
tagsViewMutations.delAllTagAndCache()
|
|
])
|
|
.then(() => window.location.reload())
|
|
.finally(() => commit('prepareLogout', false))
|
|
},
|
|
|
|
//刷新本地存储中保存的用户数据
|
|
refresh({state}) {
|
|
setUser(state)
|
|
},
|
|
|
|
removeUser({commit}) {
|
|
commit('$all', {resources: {}})
|
|
setUser()
|
|
}
|
|
}
|
|
|
|
export default {
|
|
namespaced: true,
|
|
state,
|
|
mutations,
|
|
actions
|
|
}
|
|
|