user.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import { getToken, setToken, removeToken } from '@/utils/auth'
  2. import { resetRouter } from '@/router'
  3. const getDefaultState = () => {
  4. return {
  5. token: getToken(),
  6. name: '',
  7. avatar: ''
  8. }
  9. }
  10. const state = getDefaultState()
  11. const mutations = {
  12. RESET_STATE: state => {
  13. Object.assign(state, getDefaultState())
  14. },
  15. SET_TOKEN: (state, token) => {
  16. state.token = token
  17. },
  18. SET_NAME: (state, name) => {
  19. state.name = name
  20. },
  21. SET_AVATAR: (state, avatar) => {
  22. state.avatar = avatar
  23. }
  24. }
  25. const actions = {
  26. // user login
  27. login({ commit }, userInfo) {
  28. const { username, password } = userInfo
  29. return new Promise((resolve, reject) => {
  30. login({ username: username.trim(), password: password })
  31. .then(response => {
  32. const { data } = response
  33. commit('SET_TOKEN', data.token)
  34. setToken(data.token)
  35. resolve()
  36. })
  37. .catch(error => {
  38. reject(error)
  39. })
  40. })
  41. },
  42. // get user info
  43. getInfo({ commit, state }) {
  44. return new Promise((resolve, reject) => {
  45. getInfo(state.token)
  46. .then(response => {
  47. const { data } = response
  48. if (!data) {
  49. return reject('Verification failed, please Login again.')
  50. }
  51. const { name, avatar } = data
  52. commit('SET_NAME', name)
  53. commit('SET_AVATAR', avatar)
  54. resolve(data)
  55. })
  56. .catch(error => {
  57. reject(error)
  58. })
  59. })
  60. },
  61. // remove token
  62. resetToken({ commit }) {
  63. return new Promise(resolve => {
  64. // removeToken() // must remove token first
  65. commit('RESET_STATE')
  66. resolve()
  67. })
  68. }
  69. }
  70. export default {
  71. namespaced: true,
  72. state,
  73. mutations,
  74. actions
  75. }