Personen lassen sich anlegen, bearbeiten und archivieren; ihr Detail zeigt ihre Schluessel. Unter "Meine Schluessel" hinterlegt jede Rolle eigene Public Keys (Freigabe Frage 4), wirksam erst nach Zuweisung durch einen Operator oder Admin. Warum so: - Die eigene Person entsteht beim ersten Aufruf oder wird verknuepft: per benutzerId, sonst per E-Mail - aber nur, wenn der OIDC-Anbieter die Adresse bestaetigt hat. Dafuer merkt sich Benutzer jetzt emailBestaetigt (Migration); sonst koennte jemand mit selbst gewaehlter Adresse die Keys einer fremden Person sehen. - Die Self-Service-Services nehmen nur den angemeldeten Benutzer und leiten die Person selbst ab; fremde Schluessel-IDs gelten als nicht vorhanden. - Entfernen nur fuer eigene, selbst hinterlegte Keys ohne Verwendung, bedingt geloescht, damit eine gleichzeitige Zuweisung nicht per Cascade verschwindet. - Archivieren statt Loeschen: wer bis wann welchen Key hatte, bleibt nachvollziehbar. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
24 lines
1020 B
TypeScript
24 lines
1020 B
TypeScript
import type { Metadata } from "next";
|
|
import { LEERE_PERSON, PersonFormular } from "@/components/personen/PersonFormular";
|
|
import { Breadcrumb } from "@/components/ui/Breadcrumb";
|
|
import { Seitenkopf } from "@/components/ui/Seitenkopf";
|
|
import { sitzungErforderlich } from "@/server/auth/sitzungspflicht";
|
|
import { kontenAuswahl } from "@/server/queries/personen";
|
|
|
|
export const metadata: Metadata = { title: "Person anlegen" };
|
|
|
|
export default async function PersonNeu() {
|
|
await sitzungErforderlich("schluesselVerwalten", "/personen/neu");
|
|
const konten = await kontenAuswahl();
|
|
return (
|
|
<div className="flex max-w-3xl flex-col gap-6 sm:gap-7">
|
|
<Seitenkopf
|
|
oben={<Breadcrumb pfad={[{ titel: "Personen", href: "/personen" }, { titel: "Neue Person" }]} />}
|
|
titel="Person anlegen"
|
|
untertitel="Mitarbeitende, Admins oder Dienstleister, denen Personen-Keys gehören."
|
|
/>
|
|
<PersonFormular vorgabe={LEERE_PERSON} konten={konten} abbrechenZiel="/personen" />
|
|
</div>
|
|
);
|
|
}
|