diff --git a/utils/$larafetch.ts b/utils/$larafetch.ts index 13cd2ba..e087d7a 100644 --- a/utils/$larafetch.ts +++ b/utils/$larafetch.ts @@ -9,6 +9,7 @@ export const $larafetch = $fetch.create({ async onRequest({ options }) { const { backendUrl, frontendUrl } = useRuntimeConfig().public const event = process.nitro ? useEvent() : null + let token = event ? parseCookies(event)[CSRF_COOKIE] : useCookie(CSRF_COOKIE).value @@ -46,17 +47,23 @@ export const $larafetch = $fetch.create({ }, async onResponseError({ response }) { const status = response.status + + if (status === 419) { + await initCsrf(true) + } if ([500].includes(status)) { console.error('[Laravel Error]', response.statusText, response._data) } }, }) -async function initCsrf() { +async function initCsrf(forceRefresh = false) { const { backendUrl } = useRuntimeConfig().public const existingToken = useCookie(CSRF_COOKIE).value - if (existingToken) { return existingToken } + if (existingToken && !forceRefresh) { + return existingToken + } await $fetch('/sanctum/csrf-cookie', { baseURL: backendUrl,