import { useState } from 'react'; import { useNavigate, useSearchParams } from 'react-router-dom'; import { useAuthStore } from '@/store/auth-store'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { LogIn } from 'lucide-react'; import type { AuthConfig } from '@/types/auth'; interface BasicLoginFormProps { showOIDC?: boolean; config?: AuthConfig | null; } export function BasicLoginForm({ showOIDC = false, config }: BasicLoginFormProps) { const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const [isLoading, setIsLoading] = useState(false); const [searchParams] = useSearchParams(); const navigate = useNavigate(); const { loginAdmin, loginOIDC } = useAuthStore(); const returnUrl = searchParams.get('returnUrl') || '/'; const providerName = config?.oidc?.provider || 'OIDC Provider'; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setIsLoading(true); try { await loginAdmin(username, password); // Navigate to return URL on success navigate(decodeURIComponent(returnUrl)); } catch (error) { // Error is already handled by the store and toast console.error('Login failed:', error); } finally { setIsLoading(false); } }; return (
Garage Logo
Welcome to Garage UI
setUsername(e.target.value)} required disabled={isLoading} autoComplete="username" />
setPassword(e.target.value)} required disabled={isLoading} autoComplete="current-password" />
{showOIDC && (
or
)}
); }