import apiClient from './apiClient'; /** * AuthService - Handles all authentication related API calls * Uses apiClient which automatically handles token management */ class AuthService { /** * Register a new user * @param {Object} userData - User registration data * @param {string} userData.email - User email * @param {string} userData.password - User password * @param {string} userData.confirm_password - Password confirmation * @returns {Promise} - API response */ async register(userData) { try { const response = await apiClient.post('/auth/register', userData); return response; } catch (error) { // Handle network errors if (!error.response) { throw new Error('Network error - please check your connection'); } throw error; } } /** * Login user * @param {Object} credentials - User login credentials * @param {string} credentials.email - User email * @param {string} credentials.password - User password * @param {boolean} credentials.rememberMe - Remember me flag * @returns {Promise} - API response */ async login(credentials) { try { const response = await apiClient.post('/auth/login', credentials); return response; } catch (error) { // Handle network errors if (!error.response) { throw new Error('Network error - please check your connection'); } throw error; } } /** * Logout user * @returns {Promise} - API response */ async logout() { try { // For logout, we don't need to send any data // We just need to clear the token on the client side // The server will handle token invalidation if needed const response = await apiClient.post('/auth/logout'); return response; } catch (error) { // For logout, we don't want to throw errors as it should always succeed // We just clear the local storage and let the UI handle it console.warn('Logout error (continuing anyway):', error.message); return { data: { success: true, message: 'Logged out successfully' } }; } } /** * Get current user data * @returns {Promise} - API response */ async getCurrentUser() { try { const response = await apiClient.get('/auth/user'); return response; } catch (error) { // Handle network errors if (!error.response) { throw new Error('Network error - please check your connection'); } throw error; } } } // Export singleton instance export default new AuthService();