user.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import { login, logout, getInfo } from '@/api/login'
  2. import { getToken, setToken, removeToken } from '@/utils/auth'
  3. const user = {
  4. state: {
  5. token: getToken(),
  6. name: '',
  7. avatar: '',
  8. roles: []
  9. },
  10. mutations: {
  11. SET_TOKEN: (state, token) => {
  12. state.token = token
  13. },
  14. SET_NAME: (state, name) => {
  15. state.name = name
  16. },
  17. SET_AVATAR: (state, avatar) => {
  18. state.avatar = avatar
  19. },
  20. SET_ROLES: (state, roles) => {
  21. state.roles = roles
  22. }
  23. },
  24. actions: {
  25. // 登录
  26. Login({ commit }, userInfo) {
  27. const username = userInfo.username.trim()
  28. return new Promise((resolve, reject) => {
  29. login(username, userInfo.password).then(response => {
  30. const data = response.data
  31. setToken(data.token)
  32. commit('SET_TOKEN', data.token)
  33. resolve()
  34. }).catch(error => {
  35. reject(error)
  36. })
  37. })
  38. },
  39. // 获取用户信息
  40. GetInfo({ commit, state }) {
  41. return new Promise((resolve, reject) => {
  42. getInfo(state.token).then(response => {
  43. const data = response
  44. if (data.roles && data.roles.length > 0) { // 验证返回的roles是否是一个非空数组
  45. commit('SET_ROLES', data.roles)
  46. } else {
  47. reject('getInfo: roles must be a non-null array !')
  48. }
  49. commit('SET_NAME', data.name)
  50. commit('SET_AVATAR', data.avatar)
  51. resolve(response)
  52. }).catch(error => {
  53. reject(error)
  54. })
  55. })
  56. },
  57. // 登出
  58. LogOut({ commit, state }) {
  59. return new Promise((resolve, reject) => {
  60. logout(state.token).then(() => {
  61. commit('SET_TOKEN', '')
  62. commit('SET_ROLES', [])
  63. removeToken()
  64. resolve()
  65. }).catch(error => {
  66. reject(error)
  67. })
  68. })
  69. },
  70. // 前端 登出
  71. FedLogOut({ commit }) {
  72. return new Promise(resolve => {
  73. commit('SET_TOKEN', '')
  74. removeToken()
  75. resolve()
  76. })
  77. }
  78. }
  79. }
  80. export default user