76 lines
1.9 KiB
JavaScript
76 lines
1.9 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, status: response.status }
|
|
} catch (error) {
|
|
throw error
|
|
}
|
|
}
|
|
|
|
//verify email
|
|
export const verifyEmail = async (token) => {
|
|
try {
|
|
const response = await apiClient.get(`/users/verify-email/${token}`)
|
|
return response.data
|
|
} catch (error) {
|
|
throw error
|
|
}
|
|
}
|