user.js 1.8 KB

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