user.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. // import { login, logout, getInfo } from '@/api/user'
  2. import { getToken, setToken, removeToken } from '@/utils/auth'
  3. import { resetRouter } from '@/router'
  4. import asyncRequest from "@/asnyc/service/index";
  5. const getDefaultState = () => {
  6. return {
  7. token: getToken(),
  8. name: '',
  9. avatar: '',
  10. isLogin:false
  11. }
  12. }
  13. const state = getDefaultState()
  14. const mutations = {
  15. RESET_STATE: (state) => {
  16. Object.assign(state, getDefaultState())
  17. },
  18. SET_TOKEN: (state, token) => {
  19. state.token = token
  20. state.isLogin=true
  21. },
  22. SET_NAME: (state, name) => {
  23. state.name = name
  24. },
  25. SET_AVATAR: (state, avatar) => {
  26. state.avatar = avatar
  27. }
  28. }
  29. const actions = {
  30. async logins({ commit }, userInfo) {
  31. const { username, password } = userInfo
  32. let res = await asyncRequest.login({ username: username.trim(), password: password })
  33. if(res&&res.status===0){
  34. const { data } = res
  35. commit('SET_TOKEN', data.token)
  36. localStorage.setItem("token",data.token)
  37. commit('SET_NAME', username)
  38. setToken(data.token)
  39. }else{
  40. }
  41. },
  42. // get user info
  43. getInfo({ commit, state }) {
  44. return new Promise((resolve, reject) => {
  45. getInfo(state.token).then(response => {
  46. const { data } = response
  47. if (!data) {
  48. return reject('Verification failed, please Login again.')
  49. }
  50. const { name, avatar } = data
  51. commit('SET_NAME', name)
  52. commit('SET_AVATAR', avatar)
  53. resolve(data)
  54. }).catch(error => {
  55. reject(error)
  56. })
  57. })
  58. },
  59. // user logout
  60. logout({ commit, state }) {
  61. removeToken() // must remove token first
  62. resetRouter()
  63. commit('RESET_STATE')
  64. },
  65. // remove token
  66. resetToken({ commit }) {
  67. return new Promise(resolve => {
  68. removeToken() // must remove token first
  69. commit('RESET_STATE')
  70. resolve()
  71. })
  72. }
  73. }
  74. export default {
  75. namespaced: true,
  76. state,
  77. mutations,
  78. actions
  79. }