_auth.ts 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. import JwtService from "@@/services/JwtService"
  2. import appStore from "@s"
  3. import apis from "@/api"
  4. import type { User } from "@@/types/User"
  5. import type { LoginData } from "@@/types/Account"
  6. import { use } from "echarts"
  7. export const useAuthStore = defineStore("auth", () => {
  8. const errors = ref({})
  9. const user = ref<User>({} as User)
  10. const isAuthenticated = ref(!!JwtService.getToken())
  11. const setToken = (authToken: string) => {
  12. isAuthenticated.value = true
  13. user.value.token = authToken
  14. JwtService.saveToken(authToken)
  15. }
  16. const setUser = (data: any) => {
  17. const u = data.user
  18. user.value.tenantId = u.tenantId
  19. appStore.tenantStore.setTenantId(u.tenantId)
  20. user.value.userId = u.userId
  21. user.value.userName = u.userName
  22. user.value.nickName = u.nickName
  23. user.value.email = u.email
  24. user.value.phonenumber = u.phonenumber
  25. user.value.orgId = u.orgId
  26. user.value.orgName = u.org?.orgName
  27. user.value.remark = u.remark
  28. user.value.org = u.org
  29. user.value.role = u.roles ? u.roles[0] : []
  30. changeAvatar(u.avatar)
  31. user.value.permissions = data.permissions || []
  32. if (data.roles && data.roles.length > 0) {
  33. // 验证返回的roles是否是一个非空数组
  34. user.value.roles = data.roles
  35. } else {
  36. user.value.roles = ["ROLE_DEFAULT"]
  37. }
  38. }
  39. function isSuperAdmin() {
  40. return user.value.userName === "admin" || user.value.roles.includes("super_admin")
  41. }
  42. function changeAvatar(avatar: any) {
  43. user.value.avatar = avatar
  44. // avatar == "" || avatar == null
  45. // ? // ? getAssetPath("media/avatars/300-1.jpg")
  46. // undefined
  47. // : import.meta.env.VITE_APP_BASE_API + "/resource/oss" + avatar
  48. }
  49. const purgeAuth = () => {
  50. isAuthenticated.value = false
  51. appStore.tagViewStore.delAllViews()
  52. appStore.bodyConfigStore.resetLayoutConfig()
  53. appStore.tenantStore.setTenantId("")
  54. user.value = {} as User
  55. localCache.remove("tenantId")
  56. JwtService.destroyToken()
  57. }
  58. function login(loginData: LoginData) {
  59. return new Promise((resolve, reject) => {
  60. apis.loginApi
  61. .login(loginData)
  62. .then(({ data }) => {
  63. setToken(data.access_token)
  64. resolve(true)
  65. })
  66. .catch((error) => {
  67. reject(error)
  68. })
  69. })
  70. }
  71. function socialLogin(type: string) {
  72. return apis.loginApi.authBinding(type)
  73. }
  74. function callback(loginData: LoginData) {
  75. return new Promise((resolve, reject) => {
  76. apis.loginApi
  77. .callback(loginData)
  78. .then(({ data }) => {
  79. setToken(data.access_token)
  80. resolve(true)
  81. })
  82. .catch((error) => {
  83. reject(error)
  84. })
  85. })
  86. }
  87. function getInfo() {
  88. return new Promise((resolve, reject) => {
  89. apis.loginApi
  90. .getInfo()
  91. .then(({ data }) => {
  92. setUser(data)
  93. resolve(data)
  94. })
  95. .catch((error) => {
  96. reject(error)
  97. })
  98. })
  99. }
  100. // 退出系统
  101. function logout() {
  102. return new Promise((resolve, reject) => {
  103. apis.loginApi
  104. .logout()
  105. .then(() => {
  106. purgeAuth()
  107. resolve(true)
  108. })
  109. .catch((error) => {
  110. reject(error)
  111. })
  112. })
  113. }
  114. return {
  115. errors,
  116. user,
  117. isAuthenticated,
  118. isSuperAdmin,
  119. login,
  120. socialLogin,
  121. callback,
  122. logout,
  123. getInfo,
  124. changeAvatar
  125. }
  126. })