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