Ü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

Lumio
quelle

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).

mpdonadio
quelle
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