import ListsRepository from '~/repositories/lists.repository'; import UserRepository from '~/repositories/user.repository'; export default defineNuxtPlugin(() => { const config = useRuntimeConfig(); const authStore = useAuthStore(); const apiFetcher = $fetch.create({ baseURL: config.public.apiBase, onRequest({ options }) { const headers = new Headers(options.headers); if (authStore.token) { headers.set('Authorization', `Bearer ${authStore.token}`); } if (authStore.user?.sudo_token){ headers.set('sudo_token', authStore.user?.sudo_token); } options.headers = headers; }, async onResponseError({ response }) { // Cas 401 : Session expirée ou non autorisée if (response.status === 401) { // Optionnel : nettoyer le store avant d'afficher l'erreur authStore.logout(); // On déclenche la page d'erreur Nuxt throw showError({ statusCode: 401, statusMessage: 'Session expirée ou accès non autorisé', fatal: true // 'fatal: true' force le rendu de la page d'erreur même côté client }); } // Optionnel : Gérer d'autres codes if (response.status >= 500) { console.error("Erreur serveur, réessayez plus tard."); } } }); return { provide: { api: { lists: new ListsRepository(apiFetcher as any), user: new UserRepository(apiFetcher as any) } } }; });