import Vue from 'vue' import { login, logout } from "@/api/login" import { ACCESS_TOKEN, USER_NAME,USER_INFO,UI_CACHE_DB_DICT_DATA,USER_ID,USER_LOGIN_NAME,CACHE_INCLUDED_ROUTES } from "@/store/mutation-types" import { welcome } from "@/utils/util" import { queryPermissionsByUser, getUserBtnByCurrentUser } from '@/api/api' import { getAction } from '@/api/manage' const user = { state: { token: '', username: '', realname: '', welcome: '', avatar: '', permissionList: [], info: {} }, mutations: { SET_TOKEN: (state, token) => { state.token = token }, SET_NAME: (state, { username, realname, welcome }) => { state.username = username state.realname = realname state.welcome = welcome }, SET_AVATAR: (state, avatar) => { state.avatar = avatar }, SET_PERMISSIONLIST: (state, permissionList) => { state.permissionList = permissionList }, SET_INFO: (state, info) => { state.info = info }, }, actions: { // CAS验证登录 ValidateLogin({ commit }, userInfo) { return new Promise((resolve, reject) => { getAction("/cas/client/validateLogin",userInfo).then(response => { console.log("----cas 登录--------",response); if(response.success){ const result = response.result const userInfo = result.userInfo Vue.ls.set(ACCESS_TOKEN, result.token, 7 * 24 * 60 * 60 * 1000) Vue.ls.set(USER_NAME, userInfo.username, 7 * 24 * 60 * 60 * 1000) Vue.ls.set(USER_INFO, userInfo, 7 * 24 * 60 * 60 * 1000) commit('SET_TOKEN', result.token) commit('SET_INFO', userInfo) commit('SET_NAME', { username: userInfo.username,realname: userInfo.realname, welcome: welcome() }) commit('SET_AVATAR', userInfo.avatar) resolve(response) }else{ resolve(response) } }).catch(error => { reject(error) }) }) }, // 登录 Login({ commit }, userInfo) { return new Promise((resolve, reject) => { login(userInfo).then(response => { if(response.code === 200){ if(response.data.msgTip === 'user can login'){ const result = response.data Vue.ls.set(USER_ID, result.user.id, 7 * 24 * 60 * 60 * 1000); Vue.ls.set(USER_LOGIN_NAME, result.user.loginName, 7 * 24 * 60 * 60 * 1000); //前端7天有效期,后端默认1天,只要用户在1天内有访问页面就可以一直续期直到7天结束 Vue.ls.set(ACCESS_TOKEN, result.token, 7 * 24 * 60 * 60 * 1000) Vue.ls.set(USER_INFO, result.user, 7 * 24 * 60 * 60 * 1000) commit('SET_TOKEN', result.token) } commit('SET_INFO', userInfo) resolve(response) } else{ resolve(response) } }).catch(error => { reject(error) }) }) }, // 获取用户信息 GetPermissionList({ commit }) { return new Promise((resolve, reject) => { //let v_token = Vue.ls.get(ACCESS_TOKEN); let params = {pNumber:0,userId: Vue.ls.get(USER_ID)}; queryPermissionsByUser(params).then(response => { const menuData = response; if (menuData && menuData.length > 0) { commit('SET_PERMISSIONLIST', menuData) } else { reject('getPermissionList: permissions must be a non-null array !') } resolve(response) }).catch(error => { reject(error) }) }) }, // 获取用户的按钮权限 GetUserBtnList({ commit }) { return new Promise((resolve, reject) => { getUserBtnByCurrentUser().then(response => { resolve(response) }).catch(error => { reject(error) }) }) }, // 登出 Logout({ commit, state }) { return new Promise((resolve) => { //let logoutToken = state.token; commit('SET_TOKEN', '') commit('SET_PERMISSIONLIST', []) Vue.ls.remove(USER_ID) Vue.ls.remove(USER_LOGIN_NAME) Vue.ls.remove(USER_INFO) Vue.ls.remove(UI_CACHE_DB_DICT_DATA) Vue.ls.remove(CACHE_INCLUDED_ROUTES) logout().then(() => { resolve() }).catch(() => { resolve() }) }) }, // 第三方登录 ThirdLogin({ commit }, token) { return new Promise((resolve, reject) => { thirdLogin(token).then(response => { if(response.code =='200'){ const result = response.result const userInfo = result.userInfo Vue.ls.set(ACCESS_TOKEN, result.token, 7 * 24 * 60 * 60 * 1000) Vue.ls.set(USER_NAME, userInfo.username, 7 * 24 * 60 * 60 * 1000) Vue.ls.set(USER_INFO, userInfo, 7 * 24 * 60 * 60 * 1000) commit('SET_TOKEN', result.token) commit('SET_INFO', userInfo) commit('SET_NAME', { username: userInfo.username,realname: userInfo.realname, welcome: welcome() }) commit('SET_AVATAR', userInfo.avatar) resolve(response) }else{ reject(response) } }).catch(error => { reject(error) }) }) }, } } export default user