Spaces:
Sleeping
Sleeping
// src/services/auth.js | |
import axios from './api'; | |
const API_BASE_URL = process.env.REACT_APP_API_BASE_URL || 'https://humblebeeai-al-ghazali-rag-retrieval-api.hf.space'; | |
export const login = async (username, password) => { | |
try { | |
const response = await axios.post( | |
`${API_BASE_URL}/login`, | |
new URLSearchParams({ | |
username, | |
password, | |
grant_type: 'password' | |
}), | |
{ | |
headers: { | |
'Content-Type': 'application/x-www-form-urlencoded' | |
} | |
} | |
); | |
return { | |
access_token: response.data.access_token, | |
refresh_token: response.data.refresh_token, | |
token_type: response.data.token_type | |
}; | |
} catch (error) { | |
if (error.response) { | |
throw new Error( | |
error.response.data.detail || | |
error.response.data.message || | |
'Login failed' | |
); | |
} | |
throw new Error('Network error. Please try again.'); | |
} | |
}; | |
export const logout = async (accessToken) => { | |
try { | |
await axios.post( | |
`${API_BASE_URL}/logout`, | |
{}, | |
{ | |
headers: { | |
Authorization: `Bearer ${accessToken}` | |
} | |
} | |
); | |
} catch (error) { | |
console.error('Logout error:', error); | |
// Proceed with client-side cleanup regardless | |
} | |
}; | |
export const refreshToken = async (refreshToken) => { | |
try { | |
const response = await axios.post( | |
`${API_BASE_URL}/refresh`, | |
{ refresh_token: refreshToken } | |
); | |
return { | |
access_token: response.data.access_token, | |
refresh_token: response.data.refresh_token || refreshToken, // Fallback to existing if not provided | |
token_type: response.data.token_type || 'bearer' | |
}; | |
} catch (error) { | |
if (error.response) { | |
throw new Error( | |
error.response.data.detail || | |
'Session expired. Please login again.' | |
); | |
} | |
throw new Error('Network error during token refresh'); | |
} | |
}; |