Как я могу получить роль пользователя из моего пользовательского модуля? - PullRequest
1 голос
/ 25 июля 2010

как узнать в Drupal, есть ли роль вошедшего в систему пользователя?

В переменной $ user нет информации о роли. Мне нужно указать конкретный код php в зависимости от роли пользователя в моем пользовательском модуле.

N.B. В $ user есть поле 'роль', но оно всегда содержит "аутентифицированного пользователя". Что мне нужно знать, так это особую роль (которую я создал заранее) аутентифицированного пользователя, то есть «администратора форума», «обычного пользователя».

спасибо

Ответы [ 2 ]

4 голосов
/ 25 июля 2010

Вам на самом деле не нужно делать свои собственные db_query(): user_load() уже делает это.$user->roles - массив;просто сделайте:

if (in_array('role to check', $user->roles)) { 
  // ...
}
2 голосов
/ 25 июля 2010

Лучше проверять доступ, чем проверять роль, так как имена ролей могут быть изменены в интерфейсе администратора, что нарушает ваш код.Вы можете в своем модуле определить разрешение «имеет роль X».

Если вы действительно хотите проверить роли пользователей, это возможно.{The users_roles} таблица - это таблица соединений между пользователями и ролями.Таким образом, вы можете использовать его, чтобы получить все избавления (идентификаторы ролей) от всех ролей, которые имеет пользователь.Вы можете найти имя в таблице ролей.Пример кода:

global $user;
$query = db_query("SELECT r.name FROM {role} AS r
                   LEFT JOIN {users_roles} AS U on r.rid = u.rid
                   WHERE u.uid = %d", $user->uid);
while ($name = db_result($query)) {
   // check the role names...
}
...