// frontend/src/pages/Setup/Setup.tsx import React, { useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { useAuth } from '../../contexts/AuthContext'; const Setup: React.FC = () => { const [step, setStep] = useState(1); const [formData, setFormData] = useState({ password: '', confirmPassword: '', name: '', phone: '', department: '' }); const [loading, setLoading] = useState(false); const [error, setError] = useState(''); const navigate = useNavigate(); const { login, 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.name.trim()) { setError('Bitte geben Sie einen Namen 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, name: formData.name, ...(formData.phone ? { phone: formData.phone } : {}), ...(formData.department ? { department: formData.department } : {}) }; console.log('🚀 Sending setup request with payload:', payload); const response = await fetch('http://localhost:3002/api/setup/admin', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(payload), }); const responseText = await response.text(); console.log('📨 Setup response:', responseText); let result; try { result = JSON.parse(responseText); } catch (parseError) { console.error('❌ Failed to parse response as JSON:', responseText); throw new Error('Invalid server response'); } if (!response.ok) { throw new Error(result.error || 'Setup fehlgeschlagen'); } console.log('✅ Setup successful:', result); // WICHTIG: Setup Status neu prüfen und dann zu Login navigieren await checkSetupStatus(); // Kurze Verzögerung damit der State aktualisiert werden kann setTimeout(() => { navigate('/login'); }, 100); } catch (err: any) { console.error('❌ Setup error:', err); setError(typeof err === 'string' ? err : err.message || 'Ein unerwarteter Fehler ist aufgetreten'); } finally { setLoading(false); } }; return (

Erstkonfiguration

Konfigurieren Sie den Administrator-Account

{error && (
{error}
)} {step === 1 && (
admin@instandhaltung.de
)} {step === 2 && (
)}
{step === 2 && ( )}
); }; export default Setup;