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.

71 lines
1.9 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"
6 years ago
//刷新时从本地存储中获取用户信息
const user = getUser()
const state = {
//是否在退出的过程中,避免重复弹框
prepareLogout: false,
6 years ago
/*用户基本信息*/
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, {})
6 years ago
}
const mutations = createMutations(state, true)
6 years ago
const actions = {
login({commit, dispatch}, userInfo) {
const {username, password} = userInfo
if (username !== 'admin') {
elError('登录时请用admin作为用户名!')
return Promise.reject()
}
const user = {id: 1, admin: true, name: username, avatar: null, token: 'token'}
commit('$all', user)
setUser(user)
return Promise.resolve()
6 years ago
},
logout({commit, state, dispatch}) {
return new Promise((resolve, reject) => {
if (state.prepareLogout) return Promise.reject()
commit('prepareLogout', true)
commit('resource/init', false, {root: true})
Promise.all([
dispatch('removeUser'),
tagsViewMutations.delAllTagAndCache()
])
.then(() => {
6 years ago
resolve()
window.location.reload()
})
.finally(() => commit('prepareLogout', false))
6 years ago
})
},
refresh({state}) {
setUser(state)
},
removeUser({commit}) {
commit('$all', {resources: {}})
6 years ago
setUser()
}
}
export default {
namespaced: true,
state,
mutations,
actions
}