import {boot} from 'quasar/wrappers' import axios from 'axios' import {useAuthStore} from "stores/Auth"; const api = axios.create({ baseURL: process.env.API_URL, withCredentials: true, xsrfHeaderName: "X-CSRF-TOKEN", headers: { Accept: "application/json", "Content-Type": "application/json;charset=UTF-8", }, }) export default boot(({store}) => { api.interceptors.request.use((config) => { const token = useAuthStore(store).getAccessToken(); if (token) { config.headers['Authorization'] = `Bearer ${token}` } if (['/refresh', '/login'].includes(config.url)) { delete config.headers['Authorization']; } return config; }) // Response interceptor for API calls api.interceptors.response.use( (response) => response, async function (error) { const originalRequest = error.config; if (error.response.status === 401 && !['/refresh', '/login'].includes(originalRequest.url)) { const newToken = await useAuthStore(store).refreshAccessToken().catch(err => { return Promise.reject("Logged out"); }) api.defaults.headers.common['Authorization'] = 'Bearer ' + newToken; return api(originalRequest); } return Promise.reject(error); }); }) export {axios, api}