import type { Metadata } from 'next' import { redirect } from 'next/navigation' import { ShieldCheck } from 'lucide-react' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card' import { aktuellerBenutzer } from '@/lib/auth/sitzung' import { db } from '@/lib/db' import { passkeysMoeglich } from '@/lib/auth/passkey' import { PasskeyAnmeldung } from '@/components/passkey-anmeldung' import { AnmeldeFormular } from './formular' export const metadata: Metadata = { title: 'Anmelden' } /** Fachdaten dürfen nie aus einem Cache kommen. */ export const dynamic = 'force-dynamic' export default async function AnmeldenSeite({ searchParams, }: { searchParams: Promise<{ weiter?: string }> }) { // Wer schon angemeldet ist, soll nicht am Anmeldeformular hängen bleiben. if (await aktuellerBenutzer()) redirect('/heute') // Gibt es überhaupt schon einen Zugang? Beim allerersten Start nicht. const anzahlBenutzer = await db.user.count({ where: { geloeschtAm: null } }) if (anzahlBenutzer === 0) redirect('/ersteinrichtung') const { weiter = '/heute' } = await searchParams return ( <> Anmelden E-Mail, Passwort und der Code aus deiner Authenticator-App — alle drei zusammen. {passkeysMoeglich() && ' Oder in einem Schritt mit deinem Passkey.'} {/* Nur wenn der Server ueber https laeuft - sonst gibt der Browser WebAuthn gar nicht frei. */} {passkeysMoeglich() && }
) }