diff --git a/middleware/00.whoami.global.ts b/middleware/00.whoami.global.ts new file mode 100644 index 0000000..a52bccd --- /dev/null +++ b/middleware/00.whoami.global.ts @@ -0,0 +1,25 @@ +export default defineNuxtRouteMiddleware(async () => { + const user = useUser(); + const auth = useAuth(); + const { fetchWhoami } = useUserAPI(); + const headers = useRequestHeaders(); + + if (headers['x-nuxt-error']) { + return; + } + + await callOnce(async () => { + try { + const data = await fetchWhoami(); + + if (!data) { + throw new Error('Profile data is missed in whoami request'); + } + + user.value = data; + } catch (error) { + auth.value = { token: '', authorized: false }; + console.log('Initial whoami request failed', error); + } + }); +}); diff --git a/plugins/00.whoami.ts b/plugins/00.whoami.ts deleted file mode 100644 index 7803828..0000000 --- a/plugins/00.whoami.ts +++ /dev/null @@ -1,21 +0,0 @@ -export default defineNuxtPlugin(async () => { - const user = useUser(); - const auth = useAuth(); - const { fetchWhoami } = useUserAPI(); - - try { - const { data, error } = await useAsyncData('whoami', () => fetchWhoami()); - if (error.value) { - throw error.value; - } - - if (!data.value) { - throw new Error('Profile data is missed in whoami request'); - } - - user.value = data.value; - } catch (error) { - auth.value = { token: '', authorized: false }; - console.log('Initial whoami request failed', error); - } -});