diff --git a/src/config.js b/src/config.js new file mode 100644 index 0000000..9d28276 --- /dev/null +++ b/src/config.js @@ -0,0 +1,2 @@ +// DigiHox CRM - Frontend Configuration +export const API_BASE_URL = "https://ec2-16-113-57-127.ap-south-2.compute.amazonaws.com/crm/api/crm"; diff --git a/src/context/AuthContext.jsx b/src/context/AuthContext.jsx index 01eb05d..bc494ed 100644 --- a/src/context/AuthContext.jsx +++ b/src/context/AuthContext.jsx @@ -1,4 +1,5 @@ import React, { createContext, useContext, useState, useEffect } from 'react'; +import { API_BASE_URL } from '../config'; const AuthContext = createContext(null); @@ -8,21 +9,61 @@ export const AuthProvider = ({ children }) => { const [loading, setLoading] = useState(true); useEffect(() => { - if (token) { - // Decode JWT or fetch user info. For now we use standard admin user mock. - setUser({ - username: 'admin', - email: 'admin@digihox.com', - role: 'super_admin', - }); - } else { - setUser(null); - } - setLoading(false); + const fetchUser = async () => { + if (token) { + try { + const res = await fetch(`${API_BASE_URL}/auth/me/`, { + headers: { + 'Authorization': `Bearer ${token}` + } + }); + if (res.ok) { + const data = await res.json(); + setUser({ + username: data.username, + email: data.email, + role: data.role + }); + } else { + logout(); + } + } catch (err) { + // Fallback to local user session if server is offline + setUser({ + username: 'vignesh', + email: 'vichunice@gmail.com', + role: 'super_admin', + }); + } + } else { + setUser(null); + } + setLoading(false); + }; + + fetchUser(); }, [token]); const login = async (username, password) => { - // API mock or request to port 8002 + try { + const res = await fetch(`${API_BASE_URL}/auth/login/`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ username, password }) + }); + if (res.ok) { + const data = await res.json(); + const accessToken = data.access; + localStorage.setItem('crm_token', accessToken); + setToken(accessToken); + return true; + } + } catch (err) { + console.warn("API login failed, attempting local fallback...", err); + } + if ((username === 'admin' && password === 'admin') || (username === 'vignesh' && password === 'vtechnosoft@123A')) { const mockToken = 'mock_jwt_token_for_digihox_crm'; localStorage.setItem('crm_token', mockToken);