'use client' import { useState } from 'react' import { useRouter } from 'next/navigation' import Link from 'next/link' import { useAuth } from '@/hooks/useAuth' import { sendMagicLink } from '@/lib/api' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { Alert, AlertDescription } from '@/components/ui/alert' import { AuthenticationError } from '@/lib/auth' export default function LoginAdminPage() { const [credentials, setCredentials] = useState({ email: '', password: '' }) const [error, setError] = useState('') const [magicMessage, setMagicMessage] = useState('') const [magicError, setMagicError] = useState('') const [magicLoading, setMagicLoading] = useState(false) const [loading, setLoading] = useState(false) const router = useRouter() const { login } = useAuth() const handleLogin = async (e: React.FormEvent) => { e.preventDefault() setLoading(true) setError('') try { // Tentar fazer login usando o contexto com tipo administrador const success = await login(credentials.email, credentials.password, 'administrador') if (success) { console.log('[LOGIN-ADMIN] Login bem-sucedido, redirecionando...') // Redirecionamento direto - solução que funcionou window.location.href = '/dashboard' } } catch (err) { console.error('[LOGIN-ADMIN] Erro no login:', err) if (err instanceof AuthenticationError) { setError(err.message) } else { setError('Erro inesperado. Tente novamente.') } } finally { setLoading(false) } } const handleSendMagicLink = async () => { if (!credentials.email) { setMagicError('Por favor, preencha o email antes de solicitar o magic link.') return } setMagicLoading(true) setMagicError('') setMagicMessage('') try { const res = await sendMagicLink(credentials.email, { target: 'admin' }) setMagicMessage(res?.message ?? 'Magic link enviado. Verifique seu email.') } catch (err: any) { console.error('[MAGIC-LINK ADMIN] erro ao enviar:', err) setMagicError(err?.message ?? String(err)) } finally { setMagicLoading(false) } } return (

Login Administrador de Clínica

Entre com suas credenciais para acessar o sistema administrativo

Acesso Administrativo
setCredentials({...credentials, email: e.target.value})} required className="mt-1" disabled={loading} />
setCredentials({...credentials, password: e.target.value})} required className="mt-1" disabled={loading} />
{error && ( {error} )}
Ou entre usando um magic link (sem senha)
{magicError && ( {magicError} )} {magicMessage && ( {magicMessage} )}
) }