import { useState } from 'react'; import { Link } from 'react-router-dom'; import { Mail, ArrowLeft, CheckCircle } from 'lucide-react'; import Button from '../components/ui/Button'; import Input from '../components/ui/Input'; import Card from '../components/ui/Card'; import axios from 'axios'; export default function PasswordResetRequest() { const [email, setEmail] = useState(''); const [userType, setUserType] = useState<'admin' | 'portal'>('admin'); const [isLoading, setIsLoading] = useState(false); const [sent, setSent] = useState(false); const [error, setError] = useState(''); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(''); setIsLoading(true); try { await axios.post('/api/auth/password-reset/request', { email, userType }); setSent(true); } catch (err: any) { // Backend sendet absichtlich immer 200, aber Rate-Limit kann 429 senden if (err.response?.status === 429) { setError(err.response.data?.error || 'Zu viele Anfragen. Bitte später erneut versuchen.'); } else { setSent(true); // Auch bei anderen Fehlern Erfolg anzeigen (Email-Enumeration-Schutz) } } finally { setIsLoading(false); } }; if (sent) { return (
Wenn ein Konto mit der E-Mail {email} existiert, haben wir dir einen Link zum Zurücksetzen des Passworts gesendet. Der Link ist 2 Stunden gültig.
Nichts erhalten? Schau in den Spam-Ordner oder versuche es in ein paar Minuten erneut.
Gib deine E-Mail-Adresse ein. Wir senden dir einen Link zum Zurücksetzen.