Wie debugge ich Berechtigungen in Drupal 7?
Ich verwende Kernberichte, Fehlerprotokolle, Entwicklungsmodul-Fehlerprotokolle, Rückverfolgungs- und Knotenzugriffsberechtigungsblock, aber manchmal ist es nicht genug. Was sollte ich noch überprüfen, um herauszufinden, warum bestimmte Felder, Ansichten oder Blöcke einem Benutzer nicht angezeigt werden?
Ich habe auch festgestellt, dass es für Drupal 6 ein Modul gibt , mit dem Berechtigungen gemeldet werden können, das für Drupal 7 jedoch nicht verfügbar ist.
Ich verwende verschiedene Module von Drittanbietern, die sich auf Berechtigungen beziehen:
- devel node access 7.x-1.x-dev
- fast permissions administration 7.x-2.0
- organic groups access control 7.x-1.x
- profile2 group access 7.x-1.x-dev
- ur-node access 7.x-1.x-dev
Antworten:
Eine Möglichkeit besteht darin, ein benutzerdefiniertes Modul zu erstellen und Zugriffsinformationen auf jeder Seite, jedem Knoten und jedem Block auszudrucken.
menu_get_item () - Funktion gibt ein Routerelement zurück, das die Eigenschaft access_arguments für die aktuelle Seite hat.
Dann können Sie hook_page_alter, um die Zugangsdaten oben auf jeder Seite anzuzeigen.
Als nächstes können Sie die Informationen zu den Sperrberechtigungen wie folgt anzeigen:
Und so weiter, im Grunde das gleiche Konzept, können Sie das gleiche für Knoten, Formulare und Ansichten tun. Hoffe das hilft.
quelle
yourmodule_get_page_access()
keinen Sinn ergeben, können Sie$router_item['access_callback']
in den entsprechenden Modulen nach der Funktion mit diesem Namen suchen, um zu sehen, was dort vor sich geht. Gute Antwort.Bearbeiten Sie die Hauptdatei des Benutzermoduls. Suchen Sie die
user_access()
Funktion, fügen Sie 2 Zeilen vor derreturn
Anweisung hinzu und überwachen Sie das PHP-Fehlerprotokoll.quelle
error_log
wird nicht auf dem Bildschirm ausgegeben. Für meine Installation schrieb es in das Apache-Fehlerprotokoll. php.net/manual/en/function.error-log.phpAnscheinend verfügen Sie bereits über alle GUI-basierten Tools zur Problembehandlung von Berechtigungen. Ein fortgeschrittener (und wahrscheinlich schwierigerer) Trick, den ich in der Vergangenheit effektiv angewendet habe, ist:
In vielen Fällen sind die Abfragen, die Views ausspucken, ziemlich komplex (voller Verknüpfungen), und die manuelle Erstellung würde etwas mehr Zeit in Anspruch nehmen (außerdem wäre dies etwas fehleranfälliger). Auch dieser Ansatz stellt sicher, dass Sie gegen das testen, was der Benutzer sieht. Wenn Sie Berechtigungsmodule aktiviert haben (die Drupal-Kernberechtigungen verwenden), werden deren Tabellenverknüpfungen in der von Views verwendeten Abfrage angezeigt. Sobald ich diese Abfrage erhalten habe, ändere ich sie, um zu zeigen, wie viele Knoten des Inhaltstyps x beispielsweise für die Rolle x zulässig sind. Es ist so genau und feinkörnig wie es nur möglich ist, Berichte zu erstellen. Und das sind meine "fortgeschrittenen" Berichte.
quelle
Mit Drupal muss ich mal einen Debugger benutzen (xdebug mit netbeans). Viele Funktionen werden indirekt aufgerufen, was es fast unmöglich macht, dem zu folgen, was wirklich global angehängt wird, indem nur der Code gelesen, eine Rückverfolgung gedruckt oder die endgültige Ausgabe überprüft wird.
quelle