Rollen-Profile (mit welcher Rolle kann man welche Sichten sehen und bearbeiten) müssen aktuell manuell in der Berechtigungskonfiguration hochgeladen werden.
Verbesserung
Die Konfiguration soll beim initialen Anwendungsstart von WEB-INF/conf/security.xml geladen und importiert werden. Wenn bei einerm Re-Deployment eine neue Version der Datei ausgeliefert wird, soll diese automatisch beim initialen Start der neuen Version angewendet werden.
Konsequenzen
Die Rollen-Profile müssen für einen Import beim Anwendungsstart unabhängig von dem Komponentenbaum einer Session werden. Da in den Rollenprofilen nur Berechtigungskonfigurationen für die sog. `CompundSecurityLayout`s hinterlegt sind, dürfen auch nur für diese Komponenten (bzw. deren Security-ID) Konfigurationen gespeichert werden. Das Kopieren der Berechtigungskonfigurationen an alle Komponenten des Unterbaums muss entfallen.
Code-Migration
Die folgenden Änderungen wurden durchgeführt:
- Diverse bisher Signaturen wurden von Collection oder Collection<BoundedRole> auf Collection<? extends BoundRole> - also auf den Interface-Typ für Rollen geändert. Dabei aufgefallene Fehler bei der Typisierung wurden behoben.
- Einige Signaturen wurden von Wrapper auf TLObject erweitert.
- Die Implementierung von BoundChecker in LayoutComponent`s wurde vereinfacht: Statt `BoundCheckerDelegate zu implementieren und einen "passende" Delegierung zu erzeugen, zu speichern und zu benutzen, muss nur noch das passende BoundChecker-Subinterface implementiert werden:
- LayoutContainerBoundChecker für Komponenten, die Subkomponenten haben.
- BoundCheckerDelegate nur noch, wenn wirklich an eine andere Komponente weitergeleitet werden soll.
- Wenn in einem BoundLayout eine Komponente als securityMaster ausgezeichnet ist, dann wird die komplette Prüfung auf Anzeigbarkeit des Layouts (aber auch nur genau diese) an die ausgezeichnete Komponente weitergeleitet (Keine allow-Prüfungen mit Modell oder Kommandogruppe).
- Eine persistente Berchtigungskonfiguration für Komponenten (PersBoundComp) existiert nur noch für genau die CompoundSecurityLayout-Komponenten, für die die Berechtigung auch eingestellt werden kann. Alle anderen Komponenten innderhalb dieser Gruppen verwenden dieselbe Berechtigungskonfiguration.
- getCurrentObject() in BoundChecker ist ersetzt durch getSecurityObject().
- Die Regel, dass ein Layout von Komponenten dargestellt werden kann, wenn mindestens eine innere Komponente dem nicht widerspricht entfällt. Stattdessen prüft das Layout entweder lokal, ob es dargestellt werden kann (was in der Regel der Fall ist), oder es delegiert an eine speziell ausgezeichnete securityMaster-Komponente.
- Die Komponentenkonfigurationsoption securityProviderClass ist entfallen. securityProviderClass="somePrivider" muss ersetzt werden durch securityObject="ref:somePrivider". Als Ausnahme muss securityProviderClass="default" durch securityObject="model" ersetzt werden und securityProviderClass="" durch securityObject="". Als Kurzform kann securityProviderClass="securityRoot" ersetzt werden durch securityObject="securityRoot" und securityProviderClass="model" durch securityObject="model" und securityProviderClass="path:my.path" durch securityObject="path:my.path" und securityProviderClass="null" durch securityObject="".