"use client"; import { useEffect, useState } from 'react'; import { useRouter } from 'next/navigation'; import { createClient } from '@/lib/supabase/client'; import { Loader2 } from 'lucide-react'; interface Settings { host: string; port: number; secure: boolean; user: string; pass: string; } export default function SettingsPage() { const [settings, setSettings] = useState(null); const [loading, setLoading] = useState(true); const [message, setMessage] = useState(''); const router = useRouter(); // Load current settings and verify access useEffect(() => { async function checkAccessAndLoad() { const supabase = createClient(); const { data: { user } } = await supabase.auth.getUser(); if (!user) { router.push('/auth/login'); return; } const { data: userData } = await supabase .from('users') .select('role') .eq('id', user.id) .single(); if (!userData || userData.role === 'verwaltung') { router.push('/admin'); return; } fetch('/api/admin/smtp-settings') .then((res) => res.json()) .then((data) => { if (data.settings) setSettings(data.settings as Settings); else setMessage('Failed to load settings'); }) .catch(() => setMessage('Failed to load settings')) .finally(() => setLoading(false)); } checkAccessAndLoad(); }, [router]); const handleChange = (e: React.ChangeEvent) => { const { name, value, type, checked } = e.target; setSettings((prev) => prev && { ...prev, [name]: type === 'checkbox' ? checked : name === 'port' ? Number(value) : value, } ); }; const handleSave = async (e: React.FormEvent) => { e.preventDefault(); setMessage(''); const res = await fetch('/api/admin/smtp-settings', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(settings), }); const data = await res.json(); if (res.ok) setMessage('Settings saved'); else setMessage(data.error || 'Error saving settings'); }; const handleTestEmail = async () => { setMessage(''); const testPayload = { to: settings?.user || '', // send to the configured user address subject: 'Test Email from Webshop Admin', text: 'This is a test email to verify SMTP configuration.', }; const res = await fetch('/api/admin/send-test-email', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(testPayload), }); const data = await res.json(); if (res.ok) setMessage('Test email sent successfully'); else setMessage(data.error || 'Failed to send test email'); }; if (loading) return
; return (

SMTP‑Einstellungen

{message &&

{message}

}
); }