import { KeyRound, Pencil, Plus } from "lucide-react"; import type { Metadata } from "next"; import Link from "next/link"; import { notFound } from "next/navigation"; import type { ReactNode } from "react"; import { PersonArchivieren } from "@/components/personen/PersonFormular"; import { AblaufBadge, KategorieBadge, StatusBadge, TypBadge } from "@/components/schluessel/Anzeige"; import { Badge } from "@/components/ui/Badge"; import { Breadcrumb } from "@/components/ui/Breadcrumb"; import { Button } from "@/components/ui/Button"; import { Karte } from "@/components/ui/Karte"; import { Leerzustand } from "@/components/ui/Leerzustand"; import { Seitenkopf } from "@/components/ui/Seitenkopf"; import { datum } from "@/lib/format"; import { fingerprintKurz } from "@/lib/schluessel"; import { darf } from "@/server/auth/rechte"; import { sitzungErforderlich } from "@/server/auth/sitzungspflicht"; import { personDetail } from "@/server/queries/personen"; export const metadata: Metadata = { title: "Person" }; function Info({ titel, children }: { titel: string; children: ReactNode }) { return (
{titel}
{children}
); } /** Persondetail (#013) mit ihren Schlüsseln. */ export default async function PersonSeite({ params }: { params: Promise<{ id: string }> }) { const { id } = await params; const { benutzer } = await sitzungErforderlich("lesen", `/personen/${id}`); const person = await personDetail(id); if (!person) notFound(); const archiviert = person.archiviertAm !== null; const verwalten = darf(benutzer.rolle, "schluesselVerwalten") && !archiviert; const jetzt = new Date(); return (
} titel={person.name} badges={ <> {archiviert && person.archiviertAm && ( archiviert am {datum(person.archiviertAm)} )} {person.organisation && {person.organisation}} {person.benutzer && Konto verknüpft} } aktionen={ verwalten && ( ) } />
{person.email ?? –} {person.benutzer ? ( <> {person.benutzer.name} {person.benutzer.email && ( {person.benutzer.email} )} ) : ( nicht verknüpft )} {datum(person.angelegtAm)}
{person.notiz && (

{person.notiz}

)}
} > Public Key hinterlegen ) } > {person.schluessel.length === 0 ? ( } titel="Noch keine Schlüssel" text="Die Person kann ihre Public Keys auch selbst unter „Meine Schlüssel“ hinterlegen, sobald ihr Konto verknüpft ist." /> ) : (
    {person.schluessel.map((s) => (
  • {s.name} {fingerprintKurz(s.fingerprint)} {s.selbstHinterlegt && selbst hinterlegt} {s.verwendungen === 0 ? "· noch keinem Host zugewiesen" : `· ${s.verwendungen} ${s.verwendungen === 1 ? "Verwendung" : "Verwendungen"}`}
  • ))}
)}
{verwalten && (

Archivierte Personen verschwinden aus Listen. Ihre Schlüssel bleiben bestehen und lassen sich weiterhin widerrufen.

)}
); }