Freischaltung und Lizenz
Wer welches Template wählen darf – Passung, Freigabe je Gliederung und Lizenz-Katalog.
Ein installiertes Template ist nicht automatisch für jede Website wählbar. Drei Ebenen entscheiden.
1. Passung (Manifest)
siteKinds und siteRoles legen fest, für welche Website-Arten und -Rollen das Template gilt:
| Website | typische Einstellung |
|---|---|
| Gliederung, Fraktion, Jugend, Verein | siteKinds: ["org"], optional siteRoles: ["primary"] oder ["campaign"] |
| Personen-Website | siteKinds: ["person"] |
| Portal | siteKinds: ["portal"] |
Passt ein Template nicht, lehnt der Server die Wahl ab (400 CMS_TEMPLATE_SITE_KIND bzw. CMS_TEMPLATE_SITE_ROLE).
2. Freigabe je Mandant und Gliederung
Die Einstellung cms.templates.allowed (Liste von Template-Kennungen) wird je Gliederung gepflegt und entlang des
Organisationspfads vererbt: leer = alle installierten Templates, sonst nur die genannten (standard ist immer
erlaubt). Andere lehnt der Server ab (400 CMS_TEMPLATE_NOT_ALLOWED). Die Freigabe wird nur beim Wechsel
geprüft – bestehende Websites behalten ein später entzogenes Template bis zum nächsten Wechsel.
3. Lizenz (ADR-0107)
Ein buchbares Template nennt im Manifest seinen Lizenz-Katalogeintrag
(license: { catalogKey, edition }, siehe Manifest). Geprüft wird über
den Port TemplateLicensePort aus dem SDK, den die Lizenzprüfung der Plattform bereitstellt:
import { isTemplateLicensed, type TemplateLicensePort } from "@patriotconnect/template-sdk";
const port: TemplateLicensePort = { isTemplateLicensed: ({ catalogKey, edition, tenantId }) => /* Lizenzstand */ true };
isTemplateLicensed(templateManifest, port, "mandant-123");| Lage | Ergebnis |
|---|---|
Manifest ohne license | immer lizenziert (lizenzfrei, in jeder Edition) |
| kein Port gebunden (z. B. Installation ohne Lizenzprüfung) | lizenziert |
| Port verneint | Wechsel abgelehnt mit 400 CMS_TEMPLATE_NOT_LICENSED, Galerie zeigt „nicht lizenziert“ |
Wie die Freigabe gilt die Lizenzprüfung nur beim Wechsel auf ein Template (Bestandsschutz). Das Template selbst prüft nichts – es beschreibt nur seinen Katalogeintrag.
SaaS und eigene Installation
- Eigene Installation: Es existieren nur die Templates, die der Betreiber ins Image baut. Eine Lizenzprüfung ist optional.
- SaaS: Das Image enthält alle Templates; je Mandant entscheiden Lizenz und
cms.templates.allowed.
Mehrere Templates je Website
- Website-Template: die Wahl auf der Website-Seite im Workspace.
- Seite abweichend: im Seiten-Editor „Template dieser Seite“ – z. B. eine Kampagnen-Landingpage.
- Reihenfolge beim Rendern: Seite → Website →
standard.