'use client' import { useState, Suspense } from 'react' import { useRouter, useSearchParams } from 'next/navigation' import Link from 'next/link' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' import { ArrowLeft, Loader2, CheckCircle, Lock } from 'lucide-react' import { LogoRound } from '@/components/ui/logo' export default function ResetPasswordPage() { return ( }> ) } function ResetPasswordForm() { const searchParams = useSearchParams() const router = useRouter() const token = searchParams.get('token') const [password, setPassword] = useState('') const [confirmPassword, setConfirmPassword] = useState('') const [isLoading, setIsLoading] = useState(false) const [success, setSuccess] = useState(false) const [error, setError] = useState('') const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setError('') if (password.length < 8) { setError('Passwort muss mindestens 8 Zeichen lang sein.') return } if (password !== confirmPassword) { setError('Passwörter stimmen nicht überein.') return } setIsLoading(true) try { const res = await fetch('/api/auth/reset-password', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ token, password }), }) const data = await res.json() if (res.ok && data.success) { setSuccess(true) } else { setError(data.error || 'Ein Fehler ist aufgetreten.') } } catch { setError('Verbindungsfehler. Bitte versuchen Sie es erneut.') } finally { setIsLoading(false) } } if (!token) { return (

Ungültiger Link

Kein gültiger Reset-Token gefunden.

Neuen Link anfordern
) } return (

Neues Passwort

Geben Sie Ihr neues Passwort ein.

{success ? (

Passwort wurde erfolgreich geändert.

) : (
setPassword(e.target.value)} required disabled={isLoading} className="pl-10" />
setConfirmPassword(e.target.value)} required disabled={isLoading} className="pl-10" />
{error && (

{error}

)}
)}
Zurück zur Anmeldung
) }