user.js 1.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import { login } from '@/api/user'
  2. import { getToken, setToken, removeToken, setUserId } from '@/utils/auth'
  3. import { resetRouter } from '@/router'
  4. import md5 from 'js-md5'
  5. const getDefaultState = () => {
  6. return {
  7. token: getToken()
  8. }
  9. }
  10. const state = getDefaultState()
  11. // 定义Mutations
  12. const mutations = {
  13. RESET_STATE: (state) => {
  14. Object.assign(state, getDefaultState())
  15. },
  16. SET_TOKEN: (state, token) => {
  17. state.token = token
  18. }
  19. }
  20. // 在actions里面增加一个才可以在页面加
  21. // this.$store.dispatch('user/login', this.loginForm)调用api里面的方法
  22. const actions = {
  23. // user login
  24. login({ commit }, userInfo) {
  25. const { userName, password } = userInfo
  26. return new Promise((resolve, reject) => {
  27. login({ userName: userName.trim(), password: md5(password) }).then(response => {
  28. const { data } = response
  29. commit('SET_TOKEN', data.token)
  30. setToken(data.token)
  31. setUserId('admin')
  32. resolve()
  33. }).catch(error => {
  34. reject(error)
  35. })
  36. })
  37. },
  38. // user logout
  39. logout({ commit, state }) {
  40. return new Promise((resolve, reject) => {
  41. removeToken() // must remove token first
  42. resetRouter()
  43. commit('RESET_STATE')
  44. resolve()
  45. })
  46. },
  47. // remove token
  48. resetToken({ commit }) {
  49. return new Promise(resolve => {
  50. removeToken() // must remove token first
  51. commit('RESET_STATE')
  52. resolve()
  53. })
  54. }
  55. }
  56. export default {
  57. namespaced: true,
  58. state,
  59. mutations,
  60. actions
  61. }