user.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. nickName: '',
  12. avatar: defAva,
  13. roles: [],
  14. permissions: [],
  15. deptId: ''
  16. }),
  17. actions: {
  18. // 登录
  19. login(userInfo) {
  20. const username = userInfo.username.trim()
  21. const password = userInfo.password
  22. const code = userInfo.code
  23. const uuid = userInfo.uuid
  24. return new Promise((resolve, reject) => {
  25. login(username, password, code, uuid).then(res => {
  26. setToken(res.token)
  27. this.token = res.token
  28. resolve()
  29. }).catch(error => {
  30. reject(error)
  31. })
  32. })
  33. },
  34. // 获取用户信息
  35. getInfo() {
  36. return new Promise((resolve, reject) => {
  37. getInfo().then(res => {
  38. const user = res.user
  39. const rawAvatar = user.avatar;
  40. const avatar = (rawAvatar == "" || rawAvatar == null)
  41. ? defAva
  42. : (import.meta.env.VITE_APP_MINIO_BASE_URL || "").replace(/\/+$/, "") + "/" + rawAvatar.replace(/^\/+/, "");
  43. if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
  44. this.roles = res.roles
  45. this.permissions = res.permissions
  46. } else {
  47. this.roles = ['ROLE_DEFAULT']
  48. }
  49. this.id = user.userId
  50. this.name = user.userName
  51. this.nickName = user.nickName
  52. this.avatar = avatar
  53. this.deptId = user.deptId
  54. resolve(res)
  55. }).catch(error => {
  56. reject(error)
  57. })
  58. })
  59. },
  60. // 退出系统
  61. logOut() {
  62. return new Promise((resolve, reject) => {
  63. logout(this.token).then(() => {
  64. this.token = ''
  65. this.roles = []
  66. this.permissions = []
  67. removeToken()
  68. resolve()
  69. }).catch(error => {
  70. reject(error)
  71. })
  72. })
  73. }
  74. }
  75. })
  76. export default useUserStore