user.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import { login, logout, getInfo } from '@/api/login'
  2. import { getToken, setToken, removeToken } from '@/utils/auth'
  3. import defAva from '@/assets/images/profile.jpg'
  4. const useUserStore = defineStore(
  5. 'user',
  6. {
  7. state: () => ({
  8. token: getToken(),
  9. id: '',
  10. name: '',
  11. avatar: '',
  12. userId: '',
  13. roles: [],
  14. permissions: []
  15. }),
  16. actions: {
  17. // 登录
  18. login(userInfo) {
  19. const username = userInfo.username.trim()
  20. const password = userInfo.password
  21. const code = userInfo.code
  22. const uuid = userInfo.uuid
  23. return new Promise((resolve, reject) => {
  24. login(username, password, code, uuid).then(res => {
  25. setToken(res.token)
  26. this.token = res.token
  27. resolve()
  28. }).catch(error => {
  29. reject(error)
  30. })
  31. })
  32. },
  33. // 获取用户信息
  34. getInfo() {
  35. return new Promise((resolve, reject) => {
  36. getInfo().then(res => {
  37. const user = res.user
  38. const avatar = (user.avatar == "" || user.avatar == null) ? defAva : user.avatar;
  39. const userId = user.userId
  40. if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
  41. this.roles = res.roles
  42. this.permissions = res.permissions
  43. } else {
  44. this.roles = ['ROLE_DEFAULT']
  45. }
  46. this.id = user.userId
  47. this.name = user.userName
  48. this.avatar = avatar
  49. this.userId = userId
  50. resolve(res)
  51. }).catch(error => {
  52. reject(error)
  53. })
  54. })
  55. },
  56. // 退出系统
  57. logOut() {
  58. return new Promise((resolve, reject) => {
  59. logout(this.token).then(() => {
  60. this.token = ''
  61. this.roles = []
  62. this.permissions = []
  63. removeToken()
  64. resolve()
  65. }).catch(error => {
  66. reject(error)
  67. })
  68. })
  69. }
  70. }
  71. })
  72. export default useUserStore