| | |
| | | * @description 登录、获取用户信息、退出登录、清除accessToken逻辑,不建议修改 |
| | | */ |
| | | |
| | | import Vue from 'vue' |
| | | import { getUserInfo, login, logout } from '@/api/user' |
| | | import Vue from "vue"; |
| | | import { getUserInfo, login, logout } from "@/api/user"; |
| | | import { |
| | | getAccessToken, |
| | | removeAccessToken, |
| | | setAccessToken, |
| | | } from '@/utils/accessToken' |
| | | import { resetRouter } from '@/router' |
| | | import { title, tokenName } from '@/config' |
| | | } from "@/utils/accessToken"; |
| | | import { resetRouter } from "@/router"; |
| | | import { title, tokenName } from "@/config"; |
| | | |
| | | const state = () => ({ |
| | | accessToken: getAccessToken(), |
| | | username: '', |
| | | avatar: '', |
| | | username: "", |
| | | userId: "", |
| | | avatar: "", |
| | | permissions: [], |
| | | }) |
| | | }); |
| | | const getters = { |
| | | accessToken: (state) => state.accessToken, |
| | | username: (state) => state.username, |
| | | userId: (state) => state.userId, |
| | | avatar: (state) => state.avatar, |
| | | permissions: (state) => state.permissions, |
| | | } |
| | | }; |
| | | const mutations = { |
| | | setAccessToken(state, accessToken) { |
| | | state.accessToken = accessToken |
| | | setAccessToken(accessToken) |
| | | state.accessToken = accessToken; |
| | | setAccessToken(accessToken); |
| | | }, |
| | | setUsername(state, username) { |
| | | state.username = username |
| | | state.username = username; |
| | | }, |
| | | setUserId(state, id) { |
| | | state.userId = id; |
| | | }, |
| | | setAvatar(state, avatar) { |
| | | state.avatar = avatar |
| | | state.avatar = avatar; |
| | | }, |
| | | setPermissions(state, permissions) { |
| | | state.permissions = permissions |
| | | state.permissions = permissions; |
| | | }, |
| | | } |
| | | }; |
| | | const actions = { |
| | | setPermissions({ commit }, permissions) { |
| | | commit('setPermissions', permissions) |
| | | commit("setPermissions", permissions); |
| | | }, |
| | | async login({ commit }, userInfo) { |
| | | const { data } = await login(userInfo) |
| | | const accessToken = data[tokenName] |
| | | const { data } = await login(userInfo); |
| | | const accessToken = data[tokenName]; |
| | | if (accessToken) { |
| | | commit('setAccessToken', accessToken) |
| | | const hour = new Date().getHours() |
| | | commit("setAccessToken", accessToken); |
| | | const hour = new Date().getHours(); |
| | | const thisTime = |
| | | hour < 8 |
| | | ? '早上好' |
| | | ? "早上好" |
| | | : hour <= 11 |
| | | ? '上午好' |
| | | ? "上午好" |
| | | : hour <= 13 |
| | | ? '中午好' |
| | | ? "中午好" |
| | | : hour < 18 |
| | | ? '下午好' |
| | | : '晚上好' |
| | | Vue.prototype.$baseNotify(`欢迎登录${title}`, `${thisTime}!`) |
| | | ? "下午好" |
| | | : "晚上好"; |
| | | Vue.prototype.$baseNotify(`欢迎登录${title}`, `${thisTime}!`); |
| | | } else { |
| | | Vue.prototype.$baseMessage( |
| | | `登录接口异常,未正确返回${tokenName}...`, |
| | | 'error' |
| | | ) |
| | | "error" |
| | | ); |
| | | } |
| | | }, |
| | | async getUserInfo({ commit, state }) { |
| | | const { data } = await getUserInfo(state.accessToken) |
| | | const { data } = await getUserInfo(state.accessToken); |
| | | if (!data) { |
| | | Vue.prototype.$baseMessage('验证失败,请重新登录...', 'error') |
| | | return false |
| | | Vue.prototype.$baseMessage("验证失败,请重新登录...", "error"); |
| | | return false; |
| | | } |
| | | let { permissions, username, avatar } = data |
| | | let { permissions, username, userId, avatar } = data; |
| | | if (permissions && username && Array.isArray(permissions)) { |
| | | commit('setPermissions', permissions) |
| | | commit('setUsername', username) |
| | | commit('setAvatar', avatar) |
| | | return permissions |
| | | commit("setPermissions", permissions); |
| | | commit("setUsername", username); |
| | | commit("setUserId", userId); |
| | | commit("setAvatar", avatar); |
| | | return permissions; |
| | | } else { |
| | | Vue.prototype.$baseMessage('用户信息接口异常', 'error') |
| | | return false |
| | | Vue.prototype.$baseMessage("用户信息接口异常", "error"); |
| | | return false; |
| | | } |
| | | }, |
| | | async logout({ dispatch }) { |
| | | await logout(state.accessToken) |
| | | await dispatch('resetAccessToken') |
| | | await resetRouter() |
| | | await logout(state.accessToken); |
| | | await dispatch("resetAccessToken"); |
| | | await resetRouter(); |
| | | }, |
| | | resetAccessToken({ commit }) { |
| | | commit('setPermissions', []) |
| | | commit('setAccessToken', '') |
| | | removeAccessToken() |
| | | commit("setPermissions", []); |
| | | commit("setAccessToken", ""); |
| | | removeAccessToken(); |
| | | }, |
| | | } |
| | | export default { state, getters, mutations, actions } |
| | | }; |
| | | export default { state, getters, mutations, actions }; |