user.js 1.9 KB

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