import type { CookieRef } from '#app' import UnauthorizedError from '~/services/error/UnauthorizedError' import { useRedirect } from '~/composables/utils/useRedirect' import { useRefreshProfile } from '~/composables/data/useRefreshProfile' export default defineNuxtPlugin(async () => { const route = useRoute() if (route.path.match(/\/public\/.+/)) { return } const runtimeConfig = useRuntimeConfig() const { redirectToLogout } = useRedirect() const bearer: CookieRef = useCookie('BEARER') ?? null const accessCookieId: CookieRef = useCookie('AccessId') ?? null const switchCookieId: CookieRef = useCookie('SwitchAccessId') ?? null if (accessCookieId.value === null || Number.isNaN(accessCookieId.value)) { if (runtimeConfig.public.env === 'production') { redirectToLogout() } else { console.error('Missing access id') } return } const accessId: number = parseInt(accessCookieId.value) if (isNaN(accessId)) { if (runtimeConfig.public.env === 'production') { redirectToLogout() } else { console.error('Invalid access id') } return } let switchId: number | null = parseInt(switchCookieId.value ?? '') if (isNaN(switchId)) { switchId = null } const { initiateProfile } = useRefreshProfile() try { await initiateProfile(accessId, bearer.value ?? '', switchId) } catch (error) { if ( error instanceof UnauthorizedError && runtimeConfig.public.env === 'production' ) { redirectToLogout() } else { throw error } } })