user.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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. Register({ commit }, data) {
  33. return new Promise((resolve, reject) => {
  34. LoginApi.register(data)
  35. .then(response => {
  36. if (response.code === 200) {
  37. const result = response.data
  38. loginSuccess(commit, result)
  39. }
  40. resolve(response)
  41. })
  42. .catch(reject)
  43. })
  44. },
  45. // 用户登录
  46. Login({ commit }, data) {
  47. return new Promise((resolve, reject) => {
  48. LoginApi.login(data)
  49. .then(response => {
  50. if (response.code === 200) {
  51. const result = response.data
  52. loginSuccess(commit, result)
  53. }
  54. resolve(response)
  55. })
  56. .catch(reject)
  57. })
  58. },
  59. // 微信小程序快捷登录
  60. MpWxLogin({ commit }, data) {
  61. return new Promise((resolve, reject) => {
  62. LoginApi.mpWxLogin(data, { isPrompt: false })
  63. .then(response => {
  64. const result = response.data
  65. loginSuccess(commit, result)
  66. resolve(response)
  67. })
  68. .catch(reject)
  69. })
  70. },
  71. // 微信公众号授权登录
  72. MpWxAuthLogin({ commit }, data) {
  73. return new Promise((resolve, reject) => {
  74. LoginApi.mpWxAuth(data, { isPrompt: false })
  75. .then(response => {
  76. const result = response.data
  77. loginSuccess(commit, result)
  78. resolve(response)
  79. })
  80. .catch(reject)
  81. })
  82. },
  83. // 退出登录
  84. Logout({ commit }, data) {
  85. const store = this
  86. return new Promise((resolve, reject) => {
  87. if (store.getters.userId > 0) {
  88. // 删除缓存中的tokne和userId
  89. storage.remove(USER_ID)
  90. storage.remove(ACCESS_TOKEN)
  91. // 记录到store全局变量
  92. commit('SET_TOKEN', '')
  93. commit('SET_USER_ID', null)
  94. resolve()
  95. }
  96. })
  97. }
  98. }
  99. }
  100. export default user