import type { Metadata } from 'next' import Link from 'next/link' import { Fingerprint, KeyRound, MapPin, ShieldCheck } from 'lucide-react' import { Badge } from '@/components/ui/badge' import { Button } from '@/components/ui/button' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card' import { SeitenKopf } from '@/components/seiten-kopf' import { erfordereBenutzer } from '@/lib/auth/sitzung' import { passkeysDesBenutzers, passkeysMoeglich } from '@/lib/auth/passkey' import { PasskeyVerwaltung } from '@/components/konto/passkey-verwaltung' import { ROLLEN_BESCHRIFTUNG, ROLLEN_ERKLAERUNG } from '@/lib/auth/rollen' import { formatDatumZeit } from '@/lib/utils' import { PasswortFormular } from './passwort-formular' import { AnschriftFormular } from './anschrift-formular' export const metadata: Metadata = { title: 'Mein Konto' } export const dynamic = 'force-dynamic' export default async function KontoSeite() { const benutzer = await erfordereBenutzer() const codesUebrig = benutzer.wiederherstellungscodes.length const passkeys = await passkeysDesBenutzers(benutzer.id) return (
Zugang
Name
{benutzer.name}
E-Mail
{benutzer.email}
Rolle
{ROLLEN_BESCHRIFTUNG[benutzer.rolle]}

{ROLLEN_ERKLAERUNG[benutzer.rolle]}

Letzte Anmeldung
{formatDatumZeit(benutzer.letzteAnmeldung)}
Steht im Absenderblock jedes Schreibens, das hier entsteht, und liefert den Ort für die Datumszeile. Ohne sie geht ein förmlicher Brief ohne Rücksendeadresse hinaus. Jede Angabe ist einzeln freiwillig — was fehlt, bleibt im Brief einfach weg. {benutzer.totpAktiviertAm ? `Eingerichtet am ${formatDatumZeit(benutzer.totpAktiviertAm)}.` : 'Noch nicht eingerichtet.'}

{codesUebrig > 0 ? ( <> Noch {codesUebrig} Wiederherstellungscode {codesUebrig === 1 ? '' : 's'} übrig. {codesUebrig <= 2 && ( Es wird Zeit, neue zu erzeugen. )} ) : ( Keine Wiederherstellungscodes mehr übrig. Geht dein Handy verloren, kommst du nicht mehr an die Daten. Bitte gleich neue erzeugen. )}

Anmelden mit Fingerabdruck, Gesicht oder Geräte-PIN — ohne E-Mail, Passwort und Code. Ein Passkey gilt als zweiter Faktor, weil er Besitz des Geräts und dessen Entsperrung verlangt. Er ist an diese Adresse gebunden: Auf einer nachgebauten Anmeldeseite funktioniert er nicht. Nach dem Ändern werden alle anderen offenen Sitzungen beendet — auch auf Geräten, an denen du gerade nicht sitzt.
) }