user.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import { ACCESS_TOKEN, USER_ID } from '@/store/mutation-types'
  2. import storage from '@/utils/storage'
  3. import * as LoginApi from '@/api/login'
  4. // 登陆成功后执行
  5. const loginSuccess = (commit, { token, userId }) => {
  6. // 过期时间30天
  7. const expiryTime = 30 * 86400
  8. // 保存tokne和userId到缓存
  9. storage.set(USER_ID, userId, expiryTime)
  10. storage.set(ACCESS_TOKEN, token, expiryTime)
  11. // 记录到store全局变量
  12. commit('SET_TOKEN', token)
  13. commit('SET_USER_ID', userId)
  14. }
  15. const user = {
  16. state: {
  17. // 用户认证token
  18. token: '',
  19. // 用户ID
  20. userId: null
  21. },
  22. mutations: {
  23. SET_TOKEN: (state, value) => {
  24. state.token = value
  25. },
  26. SET_USER_ID: (state, value) => {
  27. state.userId = value
  28. }
  29. },
  30. actions: {
  31. // 用户登录
  32. Login({ commit }, data) {
  33. return new Promise((resolve, reject) => {
  34. LoginApi.login({ form: data })
  35. .then(response => {
  36. const data = response.data
  37. loginSuccess(commit, data)
  38. resolve(response)
  39. })
  40. .catch(error => reject(error))
  41. })
  42. },
  43. // 退出登录
  44. Logout({ commit }, data) {
  45. const store = this
  46. return new Promise((resolve, reject) => {
  47. if (store.getters.userId > 0) {
  48. // 删除缓存中的tokne和userId
  49. storage.remove(USER_ID)
  50. storage.remove(ACCESS_TOKEN)
  51. // 记录到store全局变量
  52. commit('SET_TOKEN', '')
  53. commit('SET_USER_ID', null)
  54. resolve()
  55. }
  56. })
  57. }
  58. }
  59. }
  60. export default user