Koexistenz
Zweck
Dieses Dokument beschreibt, wie WebBlocks CMS mit einem anderen Laravel-Host-Produkt in derselben Anwendung koexistieren sollte. Es hält nur die Architekturrichtung fest; es implementiert selbst keine Änderungen an Routen, Konfiguration, Migrationen, Modellen, Controllern, Installer, Registrierung, Einladung oder Authentifizierung.
Eigenständiges CMS vs. Koexistenz mit einem Host-Produkt
WebBlocks CMS kann als eigenständiges CMS laufen, bei dem das CMS die zentrale Admin-Erfahrung, das öffentliche Site-Rendering und die Inhaltsoperationen der Anwendung besitzt.
WebBlocks CMS kann auch neben einem anderen Laravel-Host-Produkt installiert werden. In diesem Modell behält das Host-Produkt seine eigenen Produktverantwortlichkeiten, während das CMS optionale Website- und Content-Management-Funktionen bereitstellt.
CMS als optionale Website-/Content-Schicht
In Koexistenz-Installationen ist das CMS eine optionale Website- und Content-Schicht. Es sollte weder die Domänenentscheidungen des Host-Produkts noch dessen Autorisierung oder Admin-Routen übernehmen.
Das CMS sollte paketorientiert bleiben und Kollisionen mit Routen, Konfigurationsschlüsseln, View-Namespaces, Tabelleneigentum und anderen Anwendungsgrenzen der Host-Anwendung vermeiden.
Die Paketinstallation muss in geteilten Hosts fortsetzbar sein. Bevor neue CMS-Migrationen ausgeführt werden, erkennt webblocks:install einen teilweisen CMS-Tabellenzustand und meldet vorhandene CMS-Tabellen, Zeilenanzahlen, passende Migrationszeilen und bekannte Fremdschlüsselkonflikte. Leere teilweise CMS-Tabellen dürfen nur über das explizite Installer-Flag --repair-partial umbenannt werden. Nicht leere Tabellen erfordern eine manuelle Prüfung und dürfen nicht automatisch gelöscht, umbenannt oder als CMS-eigen behandelt werden.
Richtung beim Admin-Präfix
Das CMS-Admin-Präfix sollte konfigurierbar sein.
Für Koexistenz-Installationen ist das empfohlene CMS-Admin-Präfix /webadmin. Die Host-Anwendung kann /admin besitzen, und das CMS darf nicht davon ausgehen, dass /admin immer verfügbar oder CMS-eigen ist. Das Pfadsegment /cms ist für statische CMS-Assets wie /cms/css, /cms/js und /cms/brand reserviert.
Eigenständige Installationen verwenden jetzt /webadmin als kanonisches CMS-Admin-Präfix. Dokumentation, Design und künftige Implementierungsarbeiten sollten das aktuelle Verhalten und die längerfristige Richtung eines konfigurierbaren Präfixes klar voneinander trennen.
CMS-Admin-Präfixe dürfen niemals ein physisches öffentliches Asset-Verzeichnissegment wiederverwenden. In v1.32.56 wurde das kanonische Admin-Präfix zu /webadmin verschoben, weil Nginx try_files /cms/ als das physische Verzeichnis public/cms/ auflösen kann, bevor Laravel die Route sieht. /cms muss ausschließlich für Assets bleiben: Fügen Sie keine CMS-eigenen /cms-Admin-Aliase oder -Weiterleitungen hinzu und stellen Sie keine CMS-eigenen /admin-Routen wieder her.
Die endgültige Lösung vermeidet die Routen-/Dateisystemkollision vollständig, anstatt sich auf eine public/cms/index.php-Übergabe oder eine Front-Controller-Brücke zu stützen. public/cms/index.php muss sowohl in den öffentlichen Root-Assets als auch in den öffentlichen Paket-Assets abwesend bleiben.
Öffentliche Seiten verwenden den path der Seitenübersetzung als kanonische URL und können Pfade mit Schrägstrichen enthalten, etwa /docs/internal-content-api. Öffentliche Seiten-Catchalls müssen weiterhin /webadmin, /webadmin/api, /cms, /search, /search.json, /contact-messages, /install und die Auth-Routen des Hosts den zuständigen Routendateien überlassen. /p/... dient nur der Legacy-Kompatibilität und darf nicht als neue kanonische URL erzeugt werden.
Admin-Ressourcen- und Aktions-URLs
CMS-Browser-Admin-Routen verwenden /webadmin, während /webadmin/api für token-geschützte JSON-APIs reserviert ist. Ressourcen-URLs sollten vorhersehbar sein:
- Sammlung:
/webadmin/{resource} - Erstellen:
/webadmin/{resource}/create - Bearbeiten:
/webadmin/{resource}/{id}/edit - Element-Aktion:
/webadmin/{resource}/{id}/{action} - Sammlungs-Aktion:
/webadmin/{resource}/{action}
Die Seitenvorschau ist eine Element-Aktion: GET /webadmin/pages/{page}/preview. Fügen Sie keine CMS-Seitenvorschau-Routen unter /admin, /cms, /webadmin/api, /webadmin/pages/preview/{page} oder /webadmin/preview/pages/{page} hinzu.
Authentifizierte Admin-Vorschauen müssen das öffentliche Routing getrennt halten. Sie dürfen für autorisierte CMS-Benutzer seiteneigene Inhalte im Entwurfs- oder Prüfstatus rendern, aber die öffentliche Seitenroute muss weiterhin nur veröffentlichte Seiten und veröffentlichte öffentliche Inhalte ausliefern.
Host-eigener Login
Innerhalb eines gemeinsamen Laravel-Hosts liegen Login und Registrierung in der Verantwortung der Host-Anwendung. Die gemeinsame users-Tabelle ist die Identitäts- und Login-Schicht.
Das CMS sollte in gemeinsam installierten Anwendungen keine doppelte Benutzeridentität erfordern. Wenn paketeigene CMS-Auth-Routen aktiv sind, müssen CMS-Admin-Gast-Weiterleitungen und CMS-Auth-Bildschirme den CMS-eigenen /webadmin/login-Routennamen webblocks.auth.login anstelle des globalen Routennamens login verwenden, da das Host-Produkt login für Pfade wie /quiztem/login besitzen kann. Hosts, die die CMS-Auth bewusst ersetzen, dürfen weiterhin ihren eigenen Login-Ablauf besitzen, aber Paket-CMS-Views und -Middleware müssen bei paketeigenen Routennamen bleiben.
CMS-eigene Autorisierung
Die Authentifizierung beweist nur, dass ein Benutzer angemeldet ist. Sie gewährt keinen CMS-Zugriff.
Die CMS-Autorisierung muss vom CMS-Mitgliedschafts- und Rollensystem entschieden werden. Der CMS-Superadmin-Status macht den Benutzer nicht zum Admin des Host-Produkts, und der Admin-Status im Host-Produkt macht den Benutzer nicht zum CMS-Superadmin.
Users-Tabelle und Verhalten bei doppelten E-Mail-Adressen
Die users-Tabelle ist die Identitätsschicht in einem gemeinsamen Laravel-Host. CMS-Zugriff wird durch CMS-eigene Mitgliedschafts- oder Rolleneinträge abgebildet, nicht durch das Anlegen eines zweiten Benutzers für dieselbe Person.
CMS-Installer-, Registrierungs- und Einladungsdesigns dürfen keine doppelten users-Zeilen für dieselbe E-Mail-Adresse anlegen.
Installer-/Einladungs-/Registrierungsverhalten
Installer-, Einladungs- und Registrierungsabläufe, die CMS-Zugriff gewähren, sollten diese Reihenfolge verwenden:
- Nach einem bestehenden Host-Benutzer mit derselben E-Mail-Adresse suchen.
- Diesen Benutzer wiederverwenden, wenn er existiert.
- Einen neuen Benutzer nur anlegen, wenn kein passender Host-Benutzer existiert.
- Den CMS-Mitgliedschafts- oder Rolleneintrag hinzufügen, nachdem der Identitätseintrag aufgelöst wurde.
Der Superadmin-Status ist eine CMS-Mitgliedschafts- oder Rollenzuweisung, keine besondere Art von users-Eintrag.
Routenbeispiele
Übliches Koexistenz-Routing sollte um klare Eigentumsverhältnisse herum entworfen werden:
/login-> Host-Identität und -Login/admin-> Admin des Host-Produkts, sofern das Host-Produkt einen besitzt/webadmin-> WebBlocks-CMS-Admin, empfohlen für Koexistenz-Installationen/webadmin/login-> paketeigener CMS-Login, wenn Paket-CMS-Auth-Routen aktiv sind/webadmin/forgot-passwordund/webadmin/reset-password/{token}-> paketeigene CMS-Bildschirme zum Zurücksetzen des Passworts, wenn Paket-CMS-Auth-Routen aktiv sind/cms/...-> statische WebBlocks-CMS-Assets- öffentliche Site-Routen -> öffentliches CMS-Rendering, wenn das CMS die öffentlichen Inhalte für die Anfrage besitzt
Eigenständige CMS-Installationen verwenden /webadmin für CMS-eigene Admin-Routen, wobei künftige konfigurierbare Präfix-Einstellungen weiterhin eine Zielrichtung sind.
Paketeigene CMS-Auth-Views müssen für CMS-eigene Bildschirme CMS-präfixierte Auth-Routen verwenden: webblocks.auth.login, webblocks.auth.logout und die bestehenden webblocks.auth.password.*-Namen. Wenn das Paket-Auth-Routen-Set keine CMS-Registrierung bereitstellt, sollte der CMS-Login den Registrieren-Link weglassen, statt auf eine host-eigene Root-Route /register zu verweisen.
Aktuelle Implementierung vs. Zielrichtung
Die aktuelle Implementierung verwendet /webadmin als kanonisches CMS-Admin-Präfix und stellt CMS-Admin-Verhalten nicht absichtlich über /admin oder /cms bereit.
Die Zielrichtung bleibt ein konfigurierbares CMS-Admin-Präfix mit /webadmin als Standard, sodass ein Host-Produkt /admin für seinen eigenen Verwaltungsbereich behalten kann und CMS-Assets unter /cms bleiben können.
Bis die Implementierung nachzieht, sollten Dokumentation und Entwürfe ausdrücklich angeben, ob sie das aktuelle Verhalten oder die Zielarchitektur beschreiben.
Außerhalb des Geltungsbereichs
- Dieses Dokument macht das CMS nicht für die Autorisierung des Host-Produkts verantwortlich.
- Dieses Dokument verlangt nicht, dass Host-Produkte vom CMS abhängen.
- Dieses Dokument implementiert selbst keine Routen- oder Migrationsänderungen.