/* * @Description: app actions * @Author: ZY * @Date: 2020-12-23 10:25:37 * @LastEditors: ZY * @LastEditTime: 2021-01-11 11:19:12 */ import {ActionTree, ActionContext} from 'vuex' import {RootState} from '../../' import {AppState} from './state' import {getUserInfo, loginApi, loginOutApi} from "../../../api/passport"; import {removeToken, setToken} from "../../../utils/auth"; import {getAuthRoutes} from "../../../appRouter/permission"; export interface Actions { login( {commit, dispatch}: ActionContext, params: { username: string, password: string } ):void getInfo({commit}: ActionContext, params: { token: string }):void logout({commit}: ActionContext):void } export const actions = { login( {commit, dispatch}: ActionContext, params: { username: string, password: string } ) { return new Promise((resolve, reject) => { loginApi(params) .then(res => { setToken('Bearer ' + res.content.token) commit('setToken', 'Bearer ' + res.content.token) // resolve(res) dispatch("getInfo", {token: res.content.token}) .then(res => { resolve(res) }) }).catch(err => { reject(err) }) }) }, async getInfo({commit}: ActionContext, params: { token: string }) { return new Promise((resolve, reject) => { getUserInfo(params) .then(res => { console.log('getInfo ', res.content) commit("setLoginInfo", res.content) getAuthRoutes() resolve(res) }) }) }, logout({commit}: ActionContext) { commit("setLogout", '') removeToken(); } }