// frontend/src/pages/Setup/Setup.tsx - UPDATED import React, { useState } from 'react'; import { useAuth } from '../../contexts/AuthContext'; const API_BASE_URL = '/api'; const Setup: React.FC = () => { const [step, setStep] = useState(1); const [formData, setFormData] = useState({ password: '', confirmPassword: '', firstname: '', lastname: '' }); const [loading, setLoading] = useState(false); const [error, setError] = useState(''); const { checkSetupStatus } = useAuth(); const handleInputChange = (e: React.ChangeEvent) => { const { name, value } = e.target; setFormData(prev => ({ ...prev, [name]: value })); }; const validateStep1 = () => { if (formData.password.length < 6) { setError('Das Passwort muss mindestens 6 Zeichen lang sein.'); return false; } if (formData.password !== formData.confirmPassword) { setError('Die Passwörter stimmen nicht überein.'); return false; } return true; }; const validateStep2 = () => { if (!formData.firstname.trim()) { setError('Bitte geben Sie einen Vornamen ein.'); return false; } if (!formData.lastname.trim()) { setError('Bitte geben Sie einen Nachnamen ein.'); return false; } return true; }; const handleNext = () => { setError(''); if (step === 1 && validateStep1()) { setStep(2); } else if (step === 2 && validateStep2()) { handleSubmit(); } }; const handleBack = () => { setError(''); setStep(1); }; const handleSubmit = async () => { try { setLoading(true); setError(''); const payload = { password: formData.password, firstname: formData.firstname, lastname: formData.lastname }; console.log('🚀 Sending setup request...', payload); const response = await fetch(`${API_BASE_URL}/setup/admin`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(payload), }); if (!response.ok) { const data = await response.json(); throw new Error(data.error || 'Setup fehlgeschlagen'); } const result = await response.json(); console.log('✅ Setup successful:', result); // Setup Status neu prüfen await checkSetupStatus(); } catch (err: any) { console.error('❌ Setup error:', err); setError(err.message || 'Ein unerwarteter Fehler ist aufgetreten'); } finally { setLoading(false); } }; // Helper to display generated email preview const getEmailPreview = () => { if (!formData.firstname.trim() || !formData.lastname.trim()) { return 'vorname.nachname@sp.de'; } const cleanFirstname = formData.firstname.toLowerCase().replace(/[^a-z0-9]/g, ''); const cleanLastname = formData.lastname.toLowerCase().replace(/[^a-z0-9]/g, ''); return `${cleanFirstname}.${cleanLastname}@sp.de`; }; return (

🚀 Erstkonfiguration

Richten Sie Ihren Administrator-Account ein

{error && (
{error}
)} {step === 1 && (
)} {step === 2 && (
{getEmailPreview()}
Die E-Mail wird automatisch aus Vor- und Nachname generiert
)}
{step === 2 && ( )}
{step === 2 && (
💡 Nach dem erfolgreichen Setup werden Sie zur Anmeldeseite weitergeleitet, wo Sie sich mit Ihrer automatisch generierten E-Mail anmelden können.
)}
); }; export default Setup;