import { useState, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import styles from './PasswordResetRequest.module.css'; import { usePasswordResetRequest } from '../hooks/useAuthentication'; import { generateAndStoreCSRFToken } from '../utils/csrfUtils'; function PasswordResetRequest() { const navigate = useNavigate(); const { requestReset, isLoading } = usePasswordResetRequest(); const [username, setUsername] = useState(''); const [usernameFocused, setUsernameFocused] = useState(false); const [validationError, setValidationError] = useState(null); const [successMessage, setSuccessMessage] = useState(null); // Set page title and generate CSRF token useEffect(() => { document.title = "PowerOn AI Platform - Passwort zurücksetzen"; generateAndStoreCSRFToken(); }, []); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setValidationError(null); if (!username.trim()) { setValidationError('Bitte geben Sie Ihren Benutzernamen ein.'); return; } try { await requestReset(username.trim()); setSuccessMessage('Falls ein Konto mit diesem Benutzernamen existiert, wurde ein Reset-Link an die hinterlegte E-Mail-Adresse gesendet. Bitte prüfen Sie auch Ihren Spam-Ordner.'); // Redirect to login after delay setTimeout(() => { navigate('/login', { state: { passwordResetRequested: true, message: 'Bitte prüfen Sie Ihre E-Mail für den Passwort-Reset-Link.' } }); }, 5000); } catch (err) { // For security, still show success message even on error setSuccessMessage('Falls ein Konto mit diesem Benutzernamen existiert, wurde ein Reset-Link an die hinterlegte E-Mail-Adresse gesendet. Bitte prüfen Sie auch Ihren Spam-Ordner.'); setTimeout(() => { navigate('/login'); }, 5000); } }; return (
Power On

Passwort zurücksetzen

{validationError && (
{validationError}
)} {successMessage && (
{successMessage}
)} {!successMessage && ( <>
{ setUsername(e.target.value); setValidationError(null); }} onFocus={() => setUsernameFocused(true)} onBlur={() => setUsernameFocused(false)} onKeyDown={(e) => { if (e.key === 'Enter') { e.preventDefault(); handleSubmit(e); } }} className={`${styles.input} ${usernameFocused || username ? styles.focused : ''}`} />

Geben Sie Ihren Benutzernamen ein. Falls ein Konto existiert, erhalten Sie einen Link zum Zurücksetzen des Passworts an Ihre hinterlegte E-Mail-Adresse.

)}
Zurück zum
); } export default PasswordResetRequest;