'use client' import { useState } from 'react' import { useRouter } from 'next/navigation' import Link from 'next/link' import { Eye, EyeOff } from 'lucide-react' import { loginWithPassword, signUpWithPassword } from '@/lib/auth/client' export function LoginForm() { const router = useRouter() const [mode, setMode] = useState<'login' | 'signup'>('login') const [email, setEmail] = useState('') const [password, setPassword] = useState('') const [confirmPassword, setConfirmPassword] = useState('') const [loading, setLoading] = useState(false) const [showPassword, setShowPassword] = useState(false) const [showConfirmPassword, setShowConfirmPassword] = useState(false) const [message, setMessage] = useState<{ type: 'success' | 'error'; text: string } | null>(null) const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setLoading(true) setMessage(null) try { if (mode === 'signup') { if (password !== confirmPassword) { throw new Error('Wachtwoorden komen niet overeen') } const result = await signUpWithPassword(email, password) if (result.session) { setMessage({ type: 'success', text: 'Account aangemaakt! Je wordt doorgestuurd...' }) setTimeout(() => { router.push('/epd/patients') }, 1000) } else { setMessage({ type: 'success', text: 'Check je inbox voor een verificatie link om je account te activeren.' }) } } else { await loginWithPassword(email, password) setMessage({ type: 'success', text: 'Ingelogd! Je wordt doorgestuurd...' }) setTimeout(() => { router.push('/epd/clients') }, 1000) } } catch (error: any) { if (error.code === 'user_already_registered' && error.data?.session) { setMessage({ type: 'success', text: 'Dit emailadres bestaat al. Je bent nu ingelogd!' }) setTimeout(() => { router.push('/epd/patients') }, 1000) } else if (error.code === 'user_already_registered') { setMessage({ type: 'error', text: error.message || 'Dit emailadres is al geregistreerd. Probeer in te loggen.' }) setTimeout(() => { setMode('login') setPassword('') setConfirmPassword('') }, 2000) } else if (error.code === 'invalid_credentials' && mode === 'login') { setMessage({ type: 'error', text: error.message || 'Email of wachtwoord is onjuist.' }) } else if (error.code === 'email_not_confirmed') { setMessage({ type: 'error', text: error.message || 'Je email is nog niet geverifieerd. Check je inbox.' }) } else { setMessage({ type: 'error', text: error.message || 'Er ging iets mis. Probeer opnieuw.' }) } } finally { setLoading(false) } } const handleQuickDemoLogin = async () => { setMode('login') setEmail('demo@mini-ecd.demo') setPassword('Demo2024!') setLoading(true) try { await loginWithPassword('demo@mini-ecd.demo', 'Demo2024!') router.push('/epd/clients') } catch (error: any) { setMessage({ type: 'error', text: 'Demo login mislukt. Probeer handmatig in te loggen.' }) setLoading(false) } } return (
{mode === 'login' ? 'Log in om toegang te krijgen tot het EPD' : 'Start vandaag nog met snellere rapportages'}
{message.text}
Build in Public door{' '} AI Speedrun