From a2e0a65b2599267efe94d665d6305f59b225bbd5 Mon Sep 17 00:00:00 2001 From: Biswa Kalyan Bhuyan Date: Tue, 29 Apr 2025 10:47:43 +0530 Subject: feat: added initlaized the frontend and backend --- frontend/src/lib/api/auth.js | 90 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 frontend/src/lib/api/auth.js (limited to 'frontend/src/lib/api/auth.js') diff --git a/frontend/src/lib/api/auth.js b/frontend/src/lib/api/auth.js new file mode 100644 index 0000000..85ed28f --- /dev/null +++ b/frontend/src/lib/api/auth.js @@ -0,0 +1,90 @@ +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; + } +}; \ No newline at end of file -- cgit v1.2.3-59-g8ed1b