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 } = 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); const adminEmail = 'admin@instandhaltung.de'; const response = await fetch('/api/setup/admin', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ email: adminEmail, password: formData.password, name: formData.name, phone: formData.phone || undefined, department: formData.department || undefined }), }); if (!response.ok) { const data = await response.json(); throw new Error(data.error || 'Setup fehlgeschlagen'); } // Automatically log in after setup await login({ email: adminEmail, password: formData.password }); navigate('/'); } catch (err: any) { setError(err.message); } finally { setLoading(false); } }; return (

Erstkonfiguration

Konfigurieren Sie den Administrator-Account

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