web-dev-qa-db-ja.com

Drupal 7で現在ログインしているユーザーの役割を取得するにはどうすればよいですか?

Drupal 7で現在ログインしているユーザーの役割を取得する方法?これを達成する簡単な方法を知っていますか?これのためのいくつかのdrupalコア関数はありますか?

17
Ek Kosmos

$ user-> rolesは、ロールIDでキー設定されたユーザーに属するロールの配列であり、valueはロール文字列です。したがって、ユーザーが「認証されたユーザー」の役割を持っているかどうかを確認したい場合、コードスニペットは次のようになります(必ずしも最も最適化されたアプローチではなく、in_arrayはかなりパフォーマンスの高い関数です)。

global $user;

if (in_array('authenticated user', $user->roles)) {
     //do stuff here
}

In_arrayは、配列を「ニードル」(引数#1)として受け入れることもできるため、複数のロールオプションをチェックできることに注意してください。

in_array(array('authenticated user', 'anonymous user'), $user->roles);
25
mattacular

ユーザーの複数の役割をチェックするための興味深い解決策を見つけました。

global $user;
$check = array_intersect(array('moderator', 'administrator'), array_values($user->roles));
if (empty($check) ? FALSE : TRUE) {
    // is admin
} else {
    // is not admin
}
9
Ek Kosmos

//現在ログインしているユーザーをロードします。

 global $user;
 print_r($user->roles);//this gives you current user roles

//彼が管理者であるかどうかを確認するには、次の方法で行うことができます

  if (in_array('administrator', $user->roles)) {
            // do some stuff
            $form['field_end_date']['#disabled'] = FALSE;
    }
1
Developer