user.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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 result = response.data
  37. loginSuccess(commit, result)
  38. resolve(response)
  39. })
  40. .catch(reject)
  41. })
  42. },
  43. // 微信小程序快捷登录
  44. MpWxLogin({ commit }, data) {
  45. return new Promise((resolve, reject) => {
  46. LoginApi.mpWxLogin({ form: data }, { isPrompt: false })
  47. .then(response => {
  48. const result = response.data
  49. loginSuccess(commit, result)
  50. resolve(response)
  51. })
  52. .catch(reject)
  53. })
  54. },
  55. // 退出登录
  56. Logout({ commit }, data) {
  57. const store = this
  58. return new Promise((resolve, reject) => {
  59. if (store.getters.userId > 0) {
  60. // 删除缓存中的tokne和userId
  61. storage.remove(USER_ID)
  62. storage.remove(ACCESS_TOKEN)
  63. // 记录到store全局变量
  64. commit('SET_TOKEN', '')
  65. commit('SET_USER_ID', null)
  66. resolve()
  67. }
  68. })
  69. }
  70. }
  71. }
  72. export default user