import axios from "axios"; import { userManager } from "./auth"; const apiClient = axios.create({ baseURL: import.meta.env.VITE_DEV_API_BASE ?? import.meta.env.VITE_ADMIN_API_BASE ?? "/api/v1", }); apiClient.interceptors.request.use(async (config) => { // OIDC Access Token 주입 const user = await userManager.getUser(); if (user?.access_token) { config.headers.Authorization = `Bearer ${user.access_token}`; } // TODO: 테넌트 선택 값을 보관하고 헤더로 전달한다. const tenantId = window.localStorage.getItem("dev_tenant_id"); // 키 이름을 좀 더 명확하게 변경 고려 if (tenantId) { config.headers["X-Tenant-ID"] = tenantId; } return config; }); apiClient.interceptors.response.use( (response) => response, (error) => { if (error.response?.status === 401) { // 401 발생 시 로그인 페이지로 리다이렉트 const isAuthPath = window.location.pathname.startsWith("/callback"); if (!isAuthPath) { userManager.signinRedirect(); } } return Promise.reject(error); }, ); export default apiClient;