Reply to comment

Drupal 7: Berechtigungsmodule Gewichtung

Eine kurze Erläuterung für mich und andere, was die parallele Nutzung mehrerer Zugriffskontroll-Module angeht:

  • Ist die Gewichtung identisch, werden alle Berechtigungen per ODER behandelt. Besitzt ein Benutzer aus irgendeinem Modul heraus Zugriffsberechtigung, erhält er immer Zugriff.
  • Die Gewichtung legt nicht die Reihenfolge der Auswertung fest, sondern tatsächlich ein Ausschlussverfahren. Wird eine Zugriffsüberprüfung auf einen Inhalt angewandt, die eine schwerere Gewichtung hat (=größere Zahl), so werden alle Berechtigungsüberprüfungen mit kleinerer Gewichtung (=geringere Zahl) vollständig ignoriert.

Zudem gibt es anscheinend eine Endlosschleife in der Datei includes/module.inc, Funktion: "function module_invoke_all($hook)" unter gewissen Konstellationen bei gleichzeitiger Nutzung der Module "content_access", "nodeaccess_nodereference" und "nodeaccess_userreference". Hier wird der Hook "node_grants" unendlich oft aufgerufen.

Die Ursache scheint in der Funktion "nodeaccess_nodereference_node_grants($account, $op)" im Modul "nodeaccess_nodereference" zu liegen. Genauere Erkenntnisse habe ich leider noch nicht. Vermutlich rufen sich die Module gegenseitig immer wieder auf, wenn eine Node-Referenz auf einen Inhalt mit weiteren Berechtigungsreferenzen verweist.

PS: Unglaublich hilfreich ist übrigens das Modul "Devel Node Access (DNA)", enthalten in Devel (http://drupal.org/project/devel). Es zeigt in Blöcken die Berechtigungen und ihre Ursachen an. Zu empfehlen ist der Debug Modus plus AJAX-Darstellung, um alle Informationen zu erhalten.

Reply

The content of this field is kept private and will not be shown publicly.

More information about formatting options