Plugin-Berechtigungen: Standardrollen und Delegierbarkeit

Plugin-Berechtigungen: Standardrollen und Delegierbarkeit

Plugin-Berechtigungsverträge wurden in 2.3.73 eingeführt und in 2.3.74 verschärft. Plugins deklarieren ihre Berechtigungen in plugin.json; Core validiert es und synchronisiert es dann mit der dynamischen Autorisierung.

Namespace und Routenschutz

Tasten müssen kleingeschrieben und geformt sein plugin.{nama-plugin}.{resource}.{action}. Der Anbietername muss mit dem Plugin-Namen identisch sein. Das Routen-Dashboard kann deklariert werden permission; Routenberechtigungen können nicht bereichert werden, da Routen keinen Ressourcenkontext enthalten. roles bleibt eine Kompatibilitätsrichtlinie und ein Verschärfungsfilter.

{
  "name": "example",
  "permissions": [{
    "key": "plugin.example.settings.access",
    "label": "Access Example Settings",
    "supports_scope": false,
    "default_roles": ["admin"],
    "delegable": true
  }]
}

Standardrollen

default_roles Akzeptieren Sie bei der Synchronisierung nur Autor, Herausgeber oder Administrator und setzen Sie die Rolle „Grant-System“ als Seed. Wenn Berechtigungen Routen und Standardeinstellungen ungeschrieben lassen, löscht Core sie aus Kompatibilitätsgründen roles. Wenn beide geschrieben werden, müssen die Werte identisch sein.

Delegierbarkeit

delegable:true ermöglicht die Verwaltung benutzerdefinierter Rollenzuteilungen. delegable:false Beschränken von Zuweisungen auf die Standardsystemrolle und Synchronisierung, Entfernen veralteter Berechtigungen für benutzerdefinierte Rollen. Dies ist nützlich für Plugin-Vorgänge, deren Delegierung nicht sicher ist.

Lebenszyklus und Datei geschlossen

Aktive Plugins werden nach dem Laden und davor synchronisiert admin_init. Deaktivierte Plugin-Berechtigungen werden jedoch weiterhin erkannt is_active=0; Durch die Deinstallation werden Berechtigungen und Gewährungen entfernt. Label-/Delegierbarkeitsänderungen können aktualisiert werden, semantische Anbieter-/Ressourcen-/Aktions-/Bereichskollisionen führen jedoch zu einem Rollback. Routenberechtigungen gelten nicht als bereit, wenn die Synchronisierung fehlschlägt.

Kollisionsschlüssel, Eigentum, Core-Routen, andere Plugin-Routen oder ungültige Verträge werden abgelehnt. Plugin-ACLs sind zusätzliche Anforderungen: Routen müssen weiterhin Core Guard, Site Owner-Richtlinie (falls verwendet), Kompatibilitätsrollenfilter und Berechtigungsprüfungen bestehen. Keine Plugin-Deklarationen dürfen den Core Guard umgehen.