import { notFound } from "next/navigation"; import { Editor } from "@/components/vorlagen/editor"; import { VersionStatus } from "@/generated/prisma/enums"; import { darf } from "@/server/auth/rollen"; import { sitzungErforderlich } from "@/server/auth/sitzungspflicht"; import { versionMitAufbau } from "@/server/queries/vorlagen"; /** * Eine Version einer Vorlage im Editor (#010). * * Die Seite prueft ihr Recht selbst — die Huelle darunter ist das zweite Netz, * nicht das erste. `lesen` genuegt zum Ansehen; geaendert werden darf nur ein * Entwurf und nur mit `vorlagenBearbeiten`. Beides entscheidet hier der Server, * der `lesend`-Schalter im Editor ist nur die Anzeige davon: die Server Actions * pruefen dasselbe noch einmal. * * `undefined` aus `versionMitAufbau` heisst „gibt es nicht oder darfst du nicht * sehen“ — die Unterscheidung waere schon die Auskunft, die wir nicht geben. */ export default async function VersionSeite({ params }: { params: Promise<{ versionId: string }> }) { const { versionId } = await params; const { benutzer } = await sitzungErforderlich("lesen", `/vorlagen/version/${versionId}`); const version = await versionMitAufbau(versionId, benutzer); if (!version) notFound(); const darfBearbeiten = darf(benutzer.rolle, "vorlagenBearbeiten"); const veroeffentlicht = version.status === VersionStatus.VEROEFFENTLICHT; return ( ); }