67 lines
1.7 KiB
JavaScript
67 lines
1.7 KiB
JavaScript
import axios from 'axios';
|
|
|
|
|
|
export const API_CONFIG = {
|
|
baseURL: import.meta.env.VITE_API_URL+'/api',
|
|
wsURL: 'http://localhost:3000',
|
|
timeout: 10000,
|
|
retryAttempts: 3
|
|
};
|
|
|
|
const apiClient = axios.create({
|
|
baseURL: API_CONFIG.baseURL,
|
|
timeout: API_CONFIG.timeout,
|
|
withCredentials: true, // Important for cookie-based auth
|
|
headers: {
|
|
'Content-Type': 'application/json'
|
|
}
|
|
});
|
|
|
|
|
|
// Add request interceptor for debugging
|
|
apiClient.interceptors.request.use(
|
|
(config) => {
|
|
console.log('Request URL:', config.url);
|
|
console.log('Request headers:', config.headers);
|
|
console.log('Current cookies:', document.cookie);
|
|
return config;
|
|
},
|
|
(error) => {
|
|
return Promise.reject(error);
|
|
}
|
|
);
|
|
|
|
// Add response interceptor for debugging cookies
|
|
apiClient.interceptors.response.use(
|
|
(response) => {
|
|
console.log('Response status:', response.status);
|
|
console.log('Response headers:', response.headers);
|
|
console.log('Set-Cookie headers:', response.headers['set-cookie']);
|
|
console.log('Cookies after response:', document.cookie);
|
|
return response;
|
|
},
|
|
(error) => {
|
|
console.error('API Error:', error.response?.data || error.message);
|
|
return Promise.reject(error);
|
|
}
|
|
);
|
|
|
|
//login
|
|
export const login = async (username, password) => {
|
|
try {
|
|
const response = await apiClient.post('/users/login', { username, password });
|
|
return response.data;
|
|
} catch (error) {
|
|
throw error;
|
|
}
|
|
};
|
|
|
|
//register
|
|
export const register = async (username, email, password, fname, lname, phone) => {
|
|
try {
|
|
const response = await apiClient.post('/users/create', { username, email, password, fname, lname, phone });
|
|
return response.data;
|
|
} catch (error) {
|
|
throw error;
|
|
}
|
|
}; |