import api from './index'; /** * Register a new user * @param {Object} userData - User registration data * @returns {Promise} - Promise with registration response */ export const register = async (userData) => { try { const response = await api.post('/auth/register', userData); return response.data; } catch (error) { throw error.response?.data || { message: 'Registration failed' }; } }; /** * Login a user * @param {Object} credentials - User login credentials * @returns {Promise} - Promise with login response */ export const login = async (credentials) => { try { const response = await api.post('/auth/login', credentials); // Store token and user data if (response.data.token) { localStorage.setItem('token', response.data.token); localStorage.setItem('user', JSON.stringify(response.data.user)); } return response.data; } catch (error) { throw error.response?.data || { message: 'Login failed' }; } }; /** * Get current user profile * @returns {Promise} - Promise with user profile data */ export const getProfile = async () => { try { const response = await api.get('/auth/profile'); return response.data; } catch (error) { throw error.response?.data || { message: 'Failed to get profile' }; } }; /** * Logout current user */ export const logout = () => { localStorage.removeItem('token'); localStorage.removeItem('user'); // Force reload to clear any state if (typeof window !== 'undefined') { window.location.href = '/login'; } }; /** * Check if user is authenticated * @returns {Boolean} - True if user is authenticated */ export const isAuthenticated = () => { if (typeof window === 'undefined') return false; const token = localStorage.getItem('token'); return !!token; }; /** * Get current user data * @returns {Object|null} - User data or null if not authenticated */ export const getCurrentUser = () => { if (typeof window === 'undefined') return null; const userStr = localStorage.getItem('user'); if (!userStr) return null; try { return JSON.parse(userStr); } catch (e) { return null; } };