user.ts 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import { UserState } from '@/stores/interface'
  2. import piniaPersistConfig from '@/stores/helper/persist'
  3. import { getToken, setToken, removeToken } from '@/utils/token'
  4. import { loginApi, getInfoApi, logoutApi } from '@/api/modules/login'
  5. // import defAva from '@/assets/images/defAva.png'
  6. import { LoginData } from '@/api/interface/login'
  7. export const useUserStore = defineStore('admin-user', {
  8. state: (): UserState => ({
  9. token: getToken(),
  10. name: '',
  11. avatar: '',
  12. roles: [],
  13. permissions: []
  14. }),
  15. getters: {},
  16. actions: {
  17. userLogin(userInfo: LoginData) {
  18. return new Promise<any>((resolve, reject) => {
  19. loginApi(userInfo)
  20. .then((res: any) => {
  21. if (res.code === 200) {
  22. const data = res.data
  23. setToken(data.access_token)
  24. this.token = data.access_token
  25. resolve(res)
  26. } else resolve({ code: 500 })
  27. })
  28. .catch((error: any) => {
  29. reject(error)
  30. })
  31. })
  32. },
  33. getInfo() {
  34. return new Promise((resolve, reject) => {
  35. getInfoApi()
  36. .then((res: any) => {
  37. if (res.code === 200) {
  38. const data = res.data
  39. const user = data.user
  40. const avatar = user.avatar == '' || user.avatar == null ? null : import.meta.env.VITE_APP_BASE_API + user.avatar
  41. if (data.roles && data.roles.length > 0) {
  42. // 验证返回的roles是否是一个非空数组
  43. this.roles = data.roles
  44. this.permissions = data.permissions
  45. } else {
  46. this.roles = ['ROLE_DEFAULT']
  47. }
  48. this.name = user.userName
  49. this.avatar = avatar
  50. }
  51. resolve(res)
  52. })
  53. .catch(error => {
  54. reject(error)
  55. })
  56. })
  57. },
  58. // 退出系统
  59. logOut() {
  60. return new Promise((resolve, reject) => {
  61. logoutApi()
  62. .then(() => {
  63. this.token = ''
  64. this.roles = []
  65. this.permissions = []
  66. removeToken()
  67. resolve(1)
  68. })
  69. .catch(error => {
  70. reject(error)
  71. })
  72. })
  73. }
  74. },
  75. persist: piniaPersistConfig('admin-token')
  76. })