user.js 2.01 KB
Newer Older
yanzhongrong's avatar
yanzhongrong committed
1
import { login, getInfo } from '@/api/user'
yanzhongrong's avatar
yanzhongrong committed
2
import { getToken, setToken, removeToken, getUserName, getUserId, removeUserName, removeUserId } from '@/utils/auth'
花裤衩's avatar
花裤衩 committed
3
import { resetRouter } from '@/router'
Pan's avatar
Pan committed
4

花裤衩's avatar
花裤衩 committed
5 6 7
const getDefaultState = () => {
  return {
    token: getToken(),
8
    userBaseInfo: {}
花裤衩's avatar
花裤衩 committed
9
  }
花裤衩's avatar
花裤衩 committed
10
}
Pan's avatar
Pan committed
11

花裤衩's avatar
花裤衩 committed
12 13
const state = getDefaultState()

花裤衩's avatar
花裤衩 committed
14
const mutations = {
花裤衩's avatar
花裤衩 committed
15 16 17
  RESET_STATE: (state) => {
    Object.assign(state, getDefaultState())
  },
花裤衩's avatar
花裤衩 committed
18 19 20
  SET_TOKEN: (state, token) => {
    state.token = token
  },
21 22
  SET_BASEINFO: (state, data) => {
    state.userBaseInfo = data
Pan's avatar
Pan committed
23
  },
花裤衩's avatar
花裤衩 committed
24
}
Pan's avatar
Pan committed
25

花裤衩's avatar
花裤衩 committed
26 27 28 29 30 31 32 33
const actions = {
  // user login
  login({ commit }, userInfo) {
    const { username, password } = userInfo
    return new Promise((resolve, reject) => {
      login({ username: username.trim(), password: password }).then(response => {
        const { data } = response
        commit('SET_TOKEN', data.token)
yanzhongrong's avatar
yanzhongrong committed
34
        commit('SET_NAME', data.userName)
花裤衩's avatar
花裤衩 committed
35 36 37 38
        setToken(data.token)
        resolve()
      }).catch(error => {
        reject(error)
Pan's avatar
Pan committed
39
      })
花裤衩's avatar
花裤衩 committed
40 41
    })
  },
Pan's avatar
Pan committed
42

花裤衩's avatar
花裤衩 committed
43
  // get user info
44 45 46 47
  getInfo({ commit }) {
    getInfo({type: 0}).then(res => {
      if (!res) return
      commit('SET_BASEINFO', res)
花裤衩's avatar
花裤衩 committed
48 49
    })
  },
Pan's avatar
Pan committed
50

花裤衩's avatar
花裤衩 committed
51 52 53
  // user logout
  logout({ commit, state }) {
    return new Promise((resolve, reject) => {
yanzhongrong's avatar
yanzhongrong committed
54
      removeToken() // must remove  token  first
yanzhongrong's avatar
yanzhongrong committed
55 56
      removeUserName() // must remove  token  first
      removeUserId() // must remove  token  first
yanzhongrong's avatar
yanzhongrong committed
57 58
      resetRouter()
      commit("SET_TOKEN", "")
59
      commit("SET_BASEINFO", {})
yanzhongrong's avatar
yanzhongrong committed
60 61
      commit('RESET_STATE')
      resolve()
花裤衩's avatar
花裤衩 committed
62 63 64 65 66 67
    })
  },

  // remove token
  resetToken({ commit }) {
    return new Promise(resolve => {
花裤衩's avatar
花裤衩 committed
68
      removeToken() // must remove  token  first
yanzhongrong's avatar
yanzhongrong committed
69 70
      removeUserName() // must remove  token  first
      removeUserId() // must remove  token  first
花裤衩's avatar
花裤衩 committed
71
      commit('RESET_STATE')
花裤衩's avatar
花裤衩 committed
72 73
      resolve()
    })
Pan's avatar
Pan committed
74
  }
Pan's avatar
Pan committed
75
}
Pan's avatar
Pan committed
76

77 78 79 80 81 82 83 84 85
const getters = {
  token(state) {
    return state.token
  },
  userBaseInfo(state) {
    return state.userBaseInfo
  },
}

花裤衩's avatar
花裤衩 committed
86 87 88 89
export default {
  namespaced: true,
  state,
  mutations,
90 91
  actions,
  getters
花裤衩's avatar
花裤衩 committed
92 93
}