import axios from 'axios' import router from '@/router' const BASE_URL = import.meta.env.VITE_API_BASE_URL const ENV_ADMIN_CLIENT_KEY = import.meta.env.VITE_ADMIN_CLIENT_KEY const ENV_ADMIN_API_KEY = import.meta.env.VITE_ADMIN_API_KEY // 使用者 API:帶 Bearer token export const userHttp = axios.create({ baseURL: BASE_URL }) userHttp.interceptors.request.use(config => { const token = localStorage.getItem('access_token') if (token) { config.headers['Authorization'] = `Bearer ${token}` } return config }) userHttp.interceptors.response.use( res => res, err => { if (err.response?.status === 401) { localStorage.removeItem('access_token') router.push('/login') } return Promise.reject(err) } ) // 管理員 API:帶 X-Client-Key / X-API-Key export const adminHttp = axios.create({ baseURL: BASE_URL }) adminHttp.interceptors.request.use(config => { const clientKey = sessionStorage.getItem('admin_client_key') || ENV_ADMIN_CLIENT_KEY const apiKey = sessionStorage.getItem('admin_api_key') || ENV_ADMIN_API_KEY if (clientKey && !sessionStorage.getItem('admin_client_key')) { sessionStorage.setItem('admin_client_key', clientKey) } if (apiKey && !sessionStorage.getItem('admin_api_key')) { sessionStorage.setItem('admin_api_key', apiKey) } if (clientKey) config.headers['X-Client-Key'] = clientKey if (apiKey) config.headers['X-API-Key'] = apiKey return config })