Überprüfen Sie, ob der Benutzer einen Knoten mit einer bestimmten ID bearbeiten kann


8

Ich muss eine Funktion oder einen Weg kennen, um herauszufinden, ob ein Benutzer einen bestimmten Knoten bearbeiten kann.

Zum Beispiel habe ich die nid 200 und der Benutzer foo hat sich angemeldet. Ich möchte überprüfen, ob er node / 200 bearbeiten kann.

Vielen Dank

Antworten:


12

Sie können dies verwenden node_access, um dies zu tun:

$node = node_load(123);
$account = user_load(456);

if (node_access("update", $node, $account) === TRUE) {
  do_something_awesome();
}

Wenn Sie sich die Quelle ansehen node_access, werden Sie sehen, dass das $nodeArgument auch ein sein kann $nid. Auf diese Weise wird der Pfad für die Bearbeitungsseiten überprüft (siehe Eintrag 'Knoten /% Knoten / Bearbeiten' in node_menu).


Vielen Dank für Ihre Antwort, aber dann scheint es, als würde ich etwas falsch machen. pastebin.com/tjcWbZNc - nur als Administrator bekomme ich die richtige Ausgabe. Aber als bestimmter Benutzer kann ich den Knoten bearbeiten, aber node_access gibt nicht true zurück.
Lumio

Okay, es funktioniert nur, wenn die Berechtigung "Inhaltszugriffskontrolle umgehen" festgelegt ist.
Lumio

Nun ... ich denke, es liegt an einem Plugin, das ich installiert habe - ich habe einen anderen Weg gefunden, um mein Ziel zu erreichen ... aber ich denke, dein Weg ist der normale Weg. Vielen Dank
Lumio

Wenn Sie den Kontoparameter $ nicht verwenden, wird standardmäßig der aktuelle Benutzer verwendet.
Batigolix
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.