user.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import { wechatAuthLogin, mobileLogin, getAccessToken } from '@/services/api/auth.js'
  2. import { wxLogin } from '@/common/auth.js'
  3. import { setStorage, getStorage } from '@/common/storage.js'
  4. import { objAssign } from '@/common/utils.js'
  5. function initUserState() {
  6. const state = {
  7. // 用户信息
  8. headImgUrl: '',
  9. mobile: '',
  10. nickName: '',
  11. openId: '',
  12. userId: 0,
  13. userIdentity: -1, // 用户类型
  14. inviteUserId: '', // 分享者用户ID
  15. accessToken: '', // token
  16. hasLogin: false, // 用户是否登录
  17. }
  18. const userInfo = getStorage('USER_INFO')
  19. if (userInfo) {
  20. Object.assign(state, userInfo)
  21. }
  22. const accessToken = getStorage('ACCESS_TOKEN')
  23. if (accessToken) {
  24. state.accessToken = accessToken
  25. }
  26. return state
  27. }
  28. const state = initUserState()
  29. console.log(state)
  30. const mutations = {
  31. SET_USER_INFO: (state, userInfo) => {
  32. state.hasLogin = true
  33. objAssign(state, userInfo)
  34. },
  35. SET_INVITE_USER_ID: (state, id) => {
  36. state.inviteUserId = id
  37. },
  38. SET_ACCESS_TOKEN: (state, token) => {
  39. state.accessToken = token
  40. },
  41. SET_LOGINOUT: (state, logout) => {
  42. state.hasLogin = logout
  43. },
  44. }
  45. const actions = {
  46. // 微信自动登录
  47. async wxAutoLogin({ commit, state, dispatch }) {
  48. try {
  49. const code = await wxLogin() // 获取微信code
  50. const res = await wechatAuthLogin({ code }) // 微信自动登录
  51. const data = JSON.parse(res.data)
  52. commit('SET_USER_INFO', data)
  53. setStorage('USER_INFO', data)
  54. dispatch('getAccessToken') // 获取token
  55. commit('SET_LOGINOUT', true)
  56. } catch (e) {
  57. commit('SET_LOGINOUT', false)
  58. console.log(e)
  59. }
  60. },
  61. // 手机号注册登录
  62. async register({ commit }, resigterData) {
  63. try {
  64. const res = await mobileLogin(resigterData)
  65. const data = JSON.parse(res.data)
  66. commit('SET_USER_INFO', data)
  67. setStorage('USER_INFO', data)
  68. commit('SET_LOGINOUT', true)
  69. } catch (e) {
  70. commit('SET_LOGINOUT', false)
  71. console.log(e)
  72. }
  73. },
  74. // 获取accessToken
  75. async getAccessToken({ commit }) {
  76. try {
  77. const res = await getAccessToken()
  78. commit('SET_ACCESS_TOKEN', res.data)
  79. setStorage('ACCESS_TOKEN', res.data)
  80. commit('SET_LOGINOUT', true)
  81. } catch (e) {
  82. commit('SET_LOGINOUT', false)
  83. console.log(e)
  84. }
  85. }
  86. }
  87. export default {
  88. namespaced: true,
  89. state,
  90. mutations,
  91. actions
  92. }