import { useAuthStore } from '~/store/auth';
export default defineNuxtPlugin((nuxtApp) => {
const config = useRuntimeConfig()
const store= useAuthStore()
const $authFetch = $fetch.create({
baseURL: config.public.apiBaseURL,
onRequest: async function ({request, options, error}) {
let userSession = useCookie('authToken').value;
if(!userSession?.token || (!userSession?.expiration || new Date(userSession.expiration) <= new Date())) {
console.log("RETRIEVE A NEW TOKEN PLEASE:")
const refreshed = await store.refreshTokenAction();
if(!refreshed) throw new Error('Token refresh failed. Aborting request.');
}
// Retrieve again, I could use refreshCookie()
userSession = useCookie('authToken').value;
if (userSession.token) {
options.headers = options.headers || {}
options.headers.Authorization = `Bearer ${userSession.token}`
}
},
onRequestError({ request, options, error }) {
},
onResponseError({ request, response, options }) {
}
})
return { provide: { authFetch: $authFetch }
}
})
import { useAuthStore } from '~/store/auth';
export default defineNuxtPlugin((nuxtApp) => {
const config = useRuntimeConfig()
const store= useAuthStore()
const $authFetch = $fetch.create({
baseURL: config.public.apiBaseURL,
onRequest: async function ({request, options, error}) {
let userSession = useCookie('authToken').value;
if(!userSession?.token || (!userSession?.expiration || new Date(userSession.expiration) <= new Date())) {
console.log("RETRIEVE A NEW TOKEN PLEASE:")
const refreshed = await store.refreshTokenAction();
if(!refreshed) throw new Error('Token refresh failed. Aborting request.');
}
// Retrieve again, I could use refreshCookie()
userSession = useCookie('authToken').value;
if (userSession.token) {
options.headers = options.headers || {}
options.headers.Authorization = `Bearer ${userSession.token}`
}
},
onRequestError({ request, options, error }) {
},
onResponseError({ request, response, options }) {
}
})
return { provide: { authFetch: $authFetch }
}
})