import axios from "axios"; import Cookies from "js-cookie"; const BASE_URL = process.env.NEXT_PUBLIC_API_URL; const api = axios.create({ baseURL: BASE_URL, "X-CSRF-Token": "", headers: { "Content-Type": "application/json", }, }); // اضافه کردن interceptor برای افزودن token به ریکوست‌هایی که نیاز به احراز هویت دارند api.interceptors.request.use( (config) => { // فقط اگر requireAuth در config تنظیم شده باشد، token اضافه می‌شود if (config.requireAuth) { const token = Cookies.get("access_token"); if (token) { config.headers.Authorization = `Bearer ${token}`; } } return config; }, (error) => { return Promise.reject(error); } ); api.interceptors.response.use( (response) => { return response.data; }, (error) => { if (error?.response?.status === 401 && typeof window !== "undefined") { const hostname = window.location.hostname; const domain = hostname.includes("localhost") ? undefined : `.${hostname.split(".").slice(-2).join(".")}`; const opts = { path: "/", ...(domain && { domain }) }; ["access_token", "refresh_token", "uuid", "userInfo"].forEach((key) => { Cookies.remove(key, opts); }); window.location.href = "/login"; } return Promise.reject(error); } ); export default api;