edu/admin/src/store/modules/user.ts

82 lines
2.3 KiB
TypeScript
Raw Normal View History

2022-04-08 02:42:44 +00:00
import { Module } from 'vuex'
import cache from '@/utils/cache'
import { TOKEN } from '@/config/cachekey'
import { apiLogin, apiLogout, apiUserInfo } from '@/api/user'
export interface UserModule {
token: string
user: object
2022-04-20 04:10:22 +00:00
permissions: any[]
2022-04-08 02:42:44 +00:00
}
const user: Module<UserModule, any> = {
namespaced: true,
state: {
token: cache.get(TOKEN) || '',
2022-04-20 04:10:22 +00:00
user: {},
permissions: []
2022-04-08 02:42:44 +00:00
},
mutations: {
setToken(state, data) {
state.token = data
cache.set(TOKEN, data)
},
setUser(state, data) {
state.user = data
2022-04-20 04:10:22 +00:00
},
setPermission(state, permissions) {
state.permissions = permissions
2022-04-08 02:42:44 +00:00
}
},
actions: {
// 登录
login({ commit }, data) {
const { account, password } = data
2022-04-08 02:42:44 +00:00
return new Promise((resolve, reject) => {
apiLogin({
username: account,
2022-04-08 02:42:44 +00:00
password: password
})
.then((data: any) => {
commit('setToken', data.token)
resolve(data)
})
.catch(error => {
reject(error)
})
})
},
// 退出登录
logout({ commit }) {
return new Promise((resolve, reject) => {
apiLogout()
.then(data => {
commit('setToken', '')
commit('setUser', {})
2022-04-20 04:10:22 +00:00
commit('setPermission', [])
2022-04-08 02:42:44 +00:00
cache.remove(TOKEN)
resolve(data)
})
.catch(error => {
reject(error)
})
})
},
// 获取管理员信息
getUser({ commit }) {
return new Promise((resolve, reject) => {
apiUserInfo()
2022-04-20 04:10:22 +00:00
.then((data: any) => {
2022-04-08 02:42:44 +00:00
commit('setUser', data)
2022-04-20 04:10:22 +00:00
commit('setPermission', data.permissions)
2022-04-08 02:42:44 +00:00
resolve(data)
})
.catch(error => {
reject(error)
})
})
}
}
}
export default user