user.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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. LoginMpWx({ commit }, data) {
  45. return new Promise((resolve, reject) => {
  46. LoginApi.loginMpWx({ 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. LoginMpWxMobile({ commit }, data) {
  57. return new Promise((resolve, reject) => {
  58. LoginApi.loginMpWxMobile({ form: data }, { isPrompt: false })
  59. .then(response => {
  60. const result = response.data
  61. loginSuccess(commit, result)
  62. resolve(response)
  63. })
  64. .catch(reject)
  65. })
  66. },
  67. // 退出登录
  68. Logout({ commit }, data) {
  69. const store = this
  70. return new Promise((resolve, reject) => {
  71. if (store.getters.userId > 0) {
  72. // 删除缓存中的tokne和userId
  73. storage.remove(USER_ID)
  74. storage.remove(ACCESS_TOKEN)
  75. // 记录到store全局变量
  76. commit('SET_TOKEN', '')
  77. commit('SET_USER_ID', null)
  78. resolve()
  79. }
  80. })
  81. }
  82. }
  83. }
  84. export default user