user.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. import { login, logout } from '@/api/user/auth'
  2. import { register, resetPassword } from '@/api/user/account'
  3. import { getMyInfo } from '@/api/user/user'
  4. import { getToken, setToken, removeToken } from '@/utils/auth'
  5. const getDefaultState = () => {
  6. return {
  7. userInfo: null,
  8. token: getToken(),
  9. name: '',
  10. roles: [],
  11. avatar: ''
  12. }
  13. }
  14. const state = getDefaultState()
  15. const mutations = {
  16. RESET_STATE: (state) => {
  17. Object.assign(state, getDefaultState())
  18. },
  19. SET_USER_INFO: (state, userInfo) => {
  20. state.userInfo = userInfo
  21. },
  22. SET_TOKEN: (state, token) => {
  23. state.token = token
  24. },
  25. SET_NAME: (state, name) => {
  26. state.name = name
  27. },
  28. SET_ROLES: (state, roles) => {
  29. state.roles = roles
  30. },
  31. SET_AVATAR: (state, avatar) => {
  32. state.avatar = avatar
  33. },
  34. SET_VIP: (state, vipInfo) => {
  35. state.userInfo.vip = vipInfo.vip
  36. state.userInfo.expiredAt = vipInfo.expiredAt
  37. }
  38. }
  39. const actions = {
  40. // 用户注册
  41. register({ commit }, registerData) {
  42. return new Promise((resolve, reject) => {
  43. register(registerData).then(res => {
  44. if (res.code === 0) {
  45. resolve()
  46. } else {
  47. alert(res.data)
  48. }
  49. }).catch(error => {
  50. reject(error)
  51. })
  52. })
  53. },
  54. // 重置密码
  55. resetPassword({ commit }, resetPasswordData) {
  56. return new Promise((resolve, reject) => {
  57. resetPassword(resetPasswordData).then(res => {
  58. if (res.code === 0) {
  59. resolve()
  60. } else {
  61. alert(res.data)
  62. }
  63. }).catch(error => {
  64. reject(error)
  65. })
  66. })
  67. },
  68. // 用户登录
  69. login({ commit }, loginData) {
  70. return new Promise((resolve, reject) => {
  71. login(loginData).then(res => {
  72. if (res.code === 0) {
  73. const token = res.data.token
  74. commit('SET_TOKEN', token)
  75. setToken(token)
  76. getMyInfo().then(res => {
  77. if (res.code === 0) {
  78. const userInfo = res.data
  79. commit('SET_USER_INFO', userInfo)
  80. resolve()
  81. } else {
  82. reject(res.data)
  83. }
  84. }).catch(error => {
  85. reject(error)
  86. })
  87. } else {
  88. // 登录失败
  89. reject(res.data)
  90. }
  91. }).catch(error => {
  92. // 登录请求错误
  93. reject(error)
  94. })
  95. })
  96. },
  97. // 获取用户信息
  98. getInfo({ commit, state }) {
  99. return new Promise((resolve, reject) => {
  100. resolve()
  101. })
  102. },
  103. // 用户注销
  104. logout({ commit, state }) {
  105. return new Promise((resolve, reject) => {
  106. logout(state.token).then(() => {
  107. removeToken() // must remove token first
  108. commit('RESET_STATE')
  109. resolve()
  110. }).catch(error => {
  111. reject(error)
  112. console.log('注销错误 -> ')
  113. console.log(error)
  114. })
  115. })
  116. },
  117. // 删除本地存储的 token
  118. resetToken({ commit }) {
  119. return new Promise(resolve => {
  120. removeToken() // must remove token first
  121. commit('RESET_STATE')
  122. resolve()
  123. })
  124. }
  125. }
  126. export default {
  127. namespaced: true,
  128. state,
  129. mutations,
  130. actions
  131. }