import React, { useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { useAuth } from '../context/useAuth'; import { ShieldCheck, UserCheck, Lock, User, ArrowRight, Sparkles } from 'lucide-react'; export function LoginPage() { const navigate = useNavigate(); const { login } = useAuth(); const [selectedRole, setSelectedRole] = useState('admin'); const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const [error, setError] = useState(''); const [loading, setLoading] = useState(false); const handleRoleSelect = (role) => { setSelectedRole(role); setError(''); }; const handleFormSubmit = async (e) => { e.preventDefault(); setError(''); if (!username.trim() || !password.trim()) { setError('Please enter both username and password.'); return; } setLoading(true); try { const user = await login(username, password); setLoading(false); // Route by the role the SERVER assigned, not by the tab that was // selected. The tab only labels which account you are signing in to. if (user.role === 'admin') navigate('/admin'); else navigate('/user'); } catch (err) { setLoading(false); // Surface the server's own message: it distinguishes bad credentials // from the lockout after repeated failures, which a generic string hides. setError(err?.message || 'Login failed. Check your username and password.'); } }; return (
Please enter your username and password to sign in
Powered by pgvector RAG Model & Multi-Store Nutrition Intelligence Engine