import axios from 'axios';
|
import type { AxiosInstance, AxiosResponse } from 'axios';
|
|
const baseURL = import.meta.env.VITE_APP_API_URL || 'http://localhost:9291';
|
|
const http: AxiosInstance = axios.create({
|
baseURL,
|
timeout: 30000,
|
});
|
|
http.interceptors.request.use(
|
(config) => {
|
const token = localStorage.getItem('token');
|
if (token) {
|
config.headers.Authorization = `Bearer ${token}`;
|
}
|
return config;
|
},
|
(error) => Promise.reject(error)
|
);
|
|
http.interceptors.response.use(
|
(response: AxiosResponse) => response.data,
|
(error) => {
|
if (error.response?.status === 401) {
|
localStorage.removeItem('token');
|
window.location.href = '/login';
|
}
|
return Promise.reject(error);
|
}
|
);
|
|
export interface LoginRequest {
|
username: string;
|
password: string;
|
}
|
|
export interface LoginResponse {
|
success: boolean;
|
message?: string;
|
data?: {
|
token: string;
|
};
|
}
|
|
export const login = (data: LoginRequest): Promise<LoginResponse> => {
|
return http.post('/api/Login', data);
|
};
|
|
export default http;
|