emis-app/store/modules/user.js

83 lines
1.5 KiB
JavaScript
Raw Normal View History

import { USERKEY } from "../actionKey"
import {
setSessionXToken,
getSessionXToken,
setSessionUserInfo,
getSessionUserInfo
} from "@/session"
2024-04-25 07:54:13 +00:00
import * as apiService from "@/common/api"
import { goto } from "@/common/untool"
export default {
state: {
info: getSessionUserInfo(),
token: getSessionXToken(),
},
mutations: {
[USERKEY.LOGIN](state, provider) {
const {
token,
info
} = provider
state.token = provider
},
[USERKEY.GETUSERINFO](state, provider) {
state.info = provider
},
[USERKEY.LOGOUT](state) {
state.token = '';
state.info = {}
},
},
getters: {
// packInfo(state) {
// return state.user
// }
},
actions: {
async [USERKEY.LOGIN]({
dispatch,
commit,
state,
rootState
}, options) {
let token = state.token
2024-04-25 07:54:13 +00:00
const resLgn = await apiService.loginByApp(options)
token = resLgn.token
setSessionXToken(token)
commit(USERKEY.LOGIN, token)
},
async [USERKEY.LOGOUT]({
dispatch,
commit,
state,
rootState
}, options) {
setSessionUserInfo({})
setSessionXToken('')
commit(USERKEY.LOGOUT)
},
async [USERKEY.GETUSERINFO]({
dispatch,
commit,
state,
rootState
}, options) {
if(!state.token) {
2024-02-28 09:48:44 +00:00
goto("login/login", 2)
throw new Error('缺少token')
}
2024-04-25 07:54:13 +00:00
const resInfo = await apiService.getInfoByApp()
const info = {
...resInfo.user,
roles: resInfo.user,
permissions: resInfo.permissions
}
commit(USERKEY.GETUSERINFO, info)
},
}
}