import axios, { type InternalAxiosRequestConfig, type AxiosResponse, type AxiosError } from 'axios' import { useAuthStore } from '@/stores/auth' import router from '@/router' const request = axios.create({ baseURL: import.meta.env.VITE_BASE_URL || '', timeout: 30000, headers: { 'Content-Type': 'application/json', }, }) // Request interceptor - add Authorization header request.interceptors.request.use( (config: InternalAxiosRequestConfig) => { const authStore = useAuthStore() if (authStore.token) { config.headers.Authorization = `Bearer ${authStore.token}` } return config }, (error: AxiosError) => { return Promise.reject(error) } ) // Response interceptor - handle 401/403 request.interceptors.response.use( (response: AxiosResponse) => { return response }, (error: AxiosError) => { if (error.response?.status === 401 || error.response?.status === 403) { const authStore = useAuthStore() authStore.logout() router.push('/admin/login') } return Promise.reject(error) } ) export default request