init.server.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import type { CookieRef } from '#app'
  2. import UnauthorizedError from '~/services/error/UnauthorizedError'
  3. import { useRedirect } from '~/composables/utils/useRedirect'
  4. import { useRefreshProfile } from '~/composables/data/useRefreshProfile'
  5. export default defineNuxtPlugin(async () => {
  6. const { redirectToLogout } = useRedirect()
  7. const bearer: CookieRef<string | null> = useCookie('BEARER') ?? null
  8. const accessCookieId: CookieRef<string | null> = useCookie('AccessId') ?? null
  9. const switchId: CookieRef<string | null> = useCookie('SwitchAccessId') ?? null
  10. if (accessCookieId.value === null || Number.isNaN(accessCookieId.value)) {
  11. redirectToLogout()
  12. return
  13. }
  14. const accessId: number = parseInt(accessCookieId.value)
  15. if (isNaN(accessId)) {
  16. throw new TypeError('Invalid access id')
  17. }
  18. const { initiateProfile } = useRefreshProfile()
  19. try {
  20. await initiateProfile(
  21. accessId,
  22. bearer.value ?? '',
  23. switchId.value !== null ? parseInt(switchId.value) : null,
  24. )
  25. } catch (error) {
  26. if (error instanceof UnauthorizedError) {
  27. redirectToLogout()
  28. } else {
  29. throw error
  30. }
  31. }
  32. })