'use client'; import { useState, useEffect } from 'react'; import { inventoryApi } from '@/lib/api'; import { User, LogIn, Shield, X, Loader2 } from 'lucide-react'; import { toast, Toaster } from 'react-hot-toast'; import { useRouter } from 'next/navigation'; export default function LoginPage() { const [mounted, setMounted] = useState(false); const [users, setUsers] = useState([]); const [isEnterprise, setIsEnterprise] = useState(false); const [isLoading, setIsLoading] = useState(true); const [selectedUserForLogin, setSelectedUserForLogin] = useState(null); const [password, setPassword] = useState(''); const router = useRouter(); useEffect(() => { setMounted(true); checkMode(); }, []); const checkMode = async () => { try { setIsLoading(true); // Get authentication mode from backend const authMode = await inventoryApi.getAuthMode(); setIsEnterprise(authMode.mode === 'enterprise'); const userList = await inventoryApi.getUsers(); setUsers(userList); } catch (error) { console.error("Failed to load auth mode or users", error); setIsEnterprise(false); // Default to local mode on error } finally { setIsLoading(false); } }; const handleLogin = async (e?: React.FormEvent) => { if (e) e.preventDefault(); const username = isEnterprise ? (document.getElementById('username') as HTMLInputElement)?.value : selectedUserForLogin?.username; if (!username) { toast.error("Please select or enter a username"); return; } try { const response = await inventoryApi.login({ username, password }); localStorage.setItem('inventory_token', response.access_token); localStorage.setItem('inventory_user', JSON.stringify(response.user)); toast.success(`Access Granted: ${response.user.username}`); router.push('/'); } catch (error: any) { const detail = error.response?.data?.detail || (isEnterprise ? "Identity Verification Failed" : "Invalid Protocol Password"); toast.error(detail); } }; if (!mounted) return null; return (

Identity Check

Secure Access Protocol Required

{isLoading ? (
) : (
{!selectedUserForLogin && !isEnterprise ? ( <> {users.length > 0 ? ( users.map((user) => ( )) ) : (

No local operators detected.

)} ) : (
{isEnterprise && (
)} {!isEnterprise && (
{selectedUserForLogin.role === 'admin' ? : }
{selectedUserForLogin.username}
)}
setPassword(e.target.value)} placeholder="••••••••" className="input-field w-full py-3 tracking-widest" autoFocus={!isEnterprise} />
{!isEnterprise && ( )}
)}
)}
TFM

TFM Group Industrial Automation

); }