Jak mogę sprawdzić, czy użytkownik ma określoną rolę?
Znalazłem to, ale dotyczy Drupala 6.
Ponieważ już znalazłeś ten post , upewnij się, że przeczytałeś również komentarze. Wyjaśnia jasno, dlaczego zaleca się sprawdzanie uprawnień zamiast sprawdzania roli. Korzystając z uprawnień, możesz przypisać to uprawnienie do wielu ról, co czyni system bardziej elastycznym. Pamiętaj też, że można zmienić nazwy ról, co spowodowałoby uszkodzenie twojego kodu.
To powiedziawszy, jeśli chcesz sprawdzić rolę, możesz to zrobić:
// 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
}
Aby sprawdzić, czy bieżący użytkownik ma jedną rolę, czy jedną z wielu ról, doskonałym sposobem jest:
źródło
Aktualizacja dla wersji Drupal> = 7,36
Możesz użyć funkcji user_has_role z Drupal API https://api.drupal.org/api/drupal/modules%21user%21user.module/function/user_has_role/7 .
Spróbuj tego przykładu:
źródło
Możesz zainstalować moduł devel i zrobić dpm ($ user). Spowoduje to wydrukowanie tablicy ze wszystkimi informacjami o użytkowniku, w tym o roli użytkownika.
Z tej tablicy można znaleźć pozycję tablicy „ról” i użyć jej w module, aby znaleźć rolę użytkownika.
źródło
Aby być przyszłościowym na wypadek zmiany nazwy roli, najlepiej sprawdzić identyfikator roli (rid), który można znaleźć w tabeli ról w bazie danych.
Jeśli chcesz sprawdzić rolę w rid 16, wykonaj:
źródło
Oto rzeczywisty kod z komentarza , który w przyjętej odpowiedzi jest określany jako najlepsza praktyka
źródło
Możesz sprawdzić rolę użytkownika przez print_r ($ user), a w wyniku otrzymasz coś takiego
źródło
aby sprawdzić, czy użytkownik ma określoną rolę:
źródło
źródło
Powyższe odpowiedzi nie działały, nie jestem pewien, znalazłem ten post i kod powinien brzmieć `
// Sprawdź, czy $ user ma rolę administratora. if (in_array ('administrator', array_values ($ user-> role))) {// Zrób coś. }?> `
źródło