'use client' import { useState } from 'react' import { API_BASE } from '../constants' export default function AddAccountModal({ onClose, onSuccess }: { onClose: () => void onSuccess: () => void }) { const [formData, setFormData] = useState({ email: '', displayName: '', imapHost: '', imapPort: 993, smtpHost: '', smtpPort: 587, username: '', password: '', }) const [submitting, setSubmitting] = useState(false) const [error, setError] = useState(null) const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setSubmitting(true) setError(null) try { const res = await fetch(`${API_BASE}/api/v1/mail/accounts`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email: formData.email, display_name: formData.displayName, imap_host: formData.imapHost, imap_port: formData.imapPort, smtp_host: formData.smtpHost, smtp_port: formData.smtpPort, username: formData.username, password: formData.password, }), }) if (res.ok) { onSuccess() } else { const data = await res.json() setError(data.detail || 'Fehler beim Hinzufügen des Kontos') } } catch (err) { setError('Netzwerkfehler') } finally { setSubmitting(false) } } return (

E-Mail-Konto hinzufügen

{error && (
{error}
)}
setFormData({ ...formData, email: e.target.value })} className="w-full px-3 py-2 border border-slate-300 rounded-lg focus:ring-2 focus:ring-primary-500" placeholder="schulleitung@grundschule-xy.de" />
setFormData({ ...formData, displayName: e.target.value })} className="w-full px-3 py-2 border border-slate-300 rounded-lg focus:ring-2 focus:ring-primary-500" placeholder="Schulleitung" />
setFormData({ ...formData, imapHost: e.target.value })} className="w-full px-3 py-2 border border-slate-300 rounded-lg focus:ring-2 focus:ring-primary-500" placeholder="imap.example.com" />
setFormData({ ...formData, imapPort: parseInt(e.target.value) })} className="w-full px-3 py-2 border border-slate-300 rounded-lg focus:ring-2 focus:ring-primary-500" />
setFormData({ ...formData, smtpHost: e.target.value })} className="w-full px-3 py-2 border border-slate-300 rounded-lg focus:ring-2 focus:ring-primary-500" placeholder="smtp.example.com" />
setFormData({ ...formData, smtpPort: parseInt(e.target.value) })} className="w-full px-3 py-2 border border-slate-300 rounded-lg focus:ring-2 focus:ring-primary-500" />
setFormData({ ...formData, username: e.target.value })} className="w-full px-3 py-2 border border-slate-300 rounded-lg focus:ring-2 focus:ring-primary-500" />
setFormData({ ...formData, password: e.target.value })} className="w-full px-3 py-2 border border-slate-300 rounded-lg focus:ring-2 focus:ring-primary-500" />

Das Passwort wird verschlüsselt in Vault gespeichert.

) }