'use client'; import { useState, useEffect } from 'react'; import { useRouter } from 'next/navigation'; import Link from 'next/link'; import { EditableText } from '@/components/EditableText'; export default function LoginPage() { const router = useRouter(); const [memberNumber, setMemberNumber] = useState(''); const [password, setPassword] = useState(''); const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(null); const [isEnabled, setIsEnabled] = useState(true); // Check if member authentication is enabled useEffect(() => { const checkSettings = async () => { try { const response = await fetch('/api/member-login', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ memberNumber: '', password: '' }), }); if (response.status === 403) { setIsEnabled(false); } } catch { // Silently fail, assume enabled } }; checkSettings(); }, []); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!memberNumber || !password) { setError('Bitte geben Sie Ihre Mitgliedsnummer und Ihr Passwort ein'); return; } setIsLoading(true); setError(null); try { const response = await fetch('/api/member-login', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ memberNumber, password }), }); const data = await response.json(); if (!response.ok) { throw new Error(data.error || 'Anmeldung fehlgeschlagen'); } // Redirect to voting page with token router.push(data.voteUrl); } catch (err) { setError(err instanceof Error ? err.message : 'Ein Fehler ist aufgetreten'); } finally { setIsLoading(false); } }; if (!isEnabled) { return (

MITGLIEDERANMELDUNG

Die Mitgliederanmeldung ist derzeit deaktiviert.
Zurück zur Startseite
); } return (

MITGLIEDERANMELDUNG

setMemberNumber(e.target.value)} className="w-full px-4 py-2 border border-gray-300 focus:outline-none focus:border-[#0057a6]" required />
setPassword(e.target.value)} className="w-full px-4 py-2 border border-gray-300 focus:outline-none focus:border-[#0057a6]" required />
{error && (
{error}
)}
Zurück zur Startseite
); }