2009-08-24 9 views
0

Um sicherzustellen, dass meine Website sicher ist und alle Berechtigungen korrekt festgelegt sind, suche ich nach einer Möglichkeit, eine Liste aller Seiten zu generieren, auf die ein bestimmter Benutzer Zugriff hat. (Also ... jeder Menü-Rückruf, bei dem user_access()TRUE für eine bestimmte UID zurückgibt).Drupal Access Control Liste

Etwas, das würde wie folgt aussehen:

$ user-> uid == 0

Startseite

Fotos

Kontakt

$ user- > uid = 23

Startseite

Fotos

Kontakt

Forum

Blog

usw.

Antwort

0

Dies ist nicht wirklich machbar in Drupal, da es eine re keine echte Seiten aus einer Systemperspektive, nur Callback-Funktionen, die Argumente. Um zu klären, denken Sie an den Standardpfad für den Knoten Seiten:

node/[nid] 

Dies wird eine beliebige ganze Zahl ist für [nid] und dann die Callback-Funktion für den node/% Pfad akzeptieren wird versuchen, einen Knoten mit einer entsprechenden ID zu finden - es ist nur nach auf der Suche nach, dass Drupal "weiß", ob die Seite tatsächlich existiert.

Das gleiche gilt für alle anderen Wege, so dass im Grunde sind Sie in einer (fast) unbegrenzten Anzahl von Potential Seiten suchen, ohne die Möglichkeit zu wissen, kurz die Wege zu testen, ob sie tatsächlich ‚existieren‘ oder Ende in einem 404.

Was Sie könnte tun, ist ein Blick in die Tabelle. Dort finden Sie alle registrierten Pfade mit ihren Callback- und Access_Callback-Funktionen. Für diese können Sie die Überprüfung pro Benutzer durchführen, aber das Ergebnis wäre schwer zu interpretieren, da die Pfade reichlich sind und viele Platzhalter enthalten.

Eine ähnliche Option existiert, wenn Sie URL-Aliase/pathauto verwenden. Dann könnten Sie die url_alias Tabelle nehmen und die Überprüfung für alle Einträge dort durchführen. Aber da Sie daran interessiert sind, Ihre Site zu sichern, wird dies nicht wirklich helfen, da Sie jeden Pfad verpassen würden, der keinen Alias ​​hat - und wie oben gesagt, sind dies unzählige.

+0

Ok. Was, wenn ich nur eine Liste zugänglicher Knoten wollte? –

+0

Überprüfen Sie die Funktion 'node_access()'. Sie könnten alle Knoten durchlaufen und das Ergebnis von 'node_access ($ op, $ node, $ account)' auf die möglichen Werte von $ op (anzeigen, aktualisieren, erstellen, löschen) für die Benutzer ($ account) überprüfen. Interesse an. Sicher machbar, aber immer noch ziemlich viel Verarbeitung, genug Knoten und Benutzer gegeben ... –