Wie kann ich überprüfen, ob ein Benutzer eine bestimmte Rolle hat?
Ich fand dies aber es ist für Drupal 6.
Da Sie diesen Beitrag bereits gefunden haben , lesen Sie auch die Kommentare. Es wird klar erläutert, warum das Prüfen auf eine Berechtigung gegenüber dem Prüfen auf eine Rolle empfohlen wird. Wenn Sie Berechtigungen verwenden, können Sie diese mehreren Rollen zuweisen, wodurch Ihr System flexibler wird. Denken Sie auch daran, dass Rollen umbenannt werden können, wodurch Ihr Code beschädigt wird.
Das heißt, wenn Sie nach einer Rolle suchen möchten, können Sie dies tun:
// Load the currently logged in user.
global $user;
// Check if the user has the 'editor' role.
if (in_array('editor', $user->roles)) {
// do fancy stuff
}
Um zu überprüfen, ob der aktuelle Benutzer eine einzelne Rolle oder eine von mehreren Rollen hat, bieten sich folgende Möglichkeiten an:
quelle
Update für Drupal-Version> = 7.36
Sie können die Funktion user_has_role über die Drupal-API https://api.drupal.org/api/drupal/modules%21user%21user.module/function/user_has_role/7 verwenden .
Versuchen Sie dieses Beispiel:
quelle
Sie könnten das Entwicklungsmodul installieren und dpm ($ user) ausführen. Dadurch wird ein Array mit allen Benutzerinformationen einschließlich der Benutzerrolle gedruckt.
In diesem Array können Sie die Array-Position von "Rollen" ermitteln und in Ihrem Modul verwenden, um die Benutzerrolle zu ermitteln.
quelle
Um für den Fall, dass sich der Rollenname ändert, zukunftssicher zu sein, überprüfen Sie am besten die Rollen-ID (rid), die in der Rollentabelle in der Datenbank zu finden ist.
Wenn Sie mit rid 16 nach einer Rolle suchen möchten, gehen Sie wie folgt vor:
quelle
Hier ist der eigentliche Code aus dem Kommentar , der in der akzeptierten Antwort als Best Practice bezeichnet wird
quelle
Sie können die Rolle eines Benutzers mit print_r ($ user) überprüfen und in der Ausgabe erhalten Sie so etwas
quelle
um zu überprüfen, ob ein Benutzer eine bestimmte Rolle hat:
quelle
quelle
Die obigen Antworten haben nicht funktioniert, ich bin mir nicht sicher, ob ich diesen Beitrag gefunden habe und der Code sollte "lauten"
// Überprüfen Sie, ob $ user die Administratorrolle hat. if (in_array ('administrator', array_values ($ user-> rollers)) {// Mach etwas. }?> `
quelle