Как получить роль пользователя в Yii2?

Как получить роль пользователя в Yii2?

Я искал и прочитал руководство по Yii2, но не нашел никакого решения.

8 ответов

Решение

Вы можете получить роли для пользователя с помощью функции getRolesByUser

Вы можете использовать это так

\Yii::$app->authManager->getRolesByUser($user_id);

Ты можешь использовать:

Yii::$app->authManager->getRolesByUser(Yii::$app->user->getId());

Я использую:

if (\Yii::$app->authManager-> getAssignment($role,$rule_id))

для фильтрации user id а также role в rbac, Подробнее о документации Yii2

Еще один пример, как получить роль пользователя:
Yii::$app->getUser()->identity->role;
Это работает, если у вас есть столбец с именем "роль" в вашей пользовательской таблице.

Ты можешь использовать:

 $user =[];
 $userAssigned = Yii::$app->authManager->getAssignments(user_id);
 foreach($userAssigned as $userAssign){
      $user[] = $userAssign->roleName;
 } 

Хорошим и более наглядным решением будет установка констант всех ролей.

$userID = $user->getId();
array_keys(Yii::$app->authManager->getRolesByUser($userID))[0] == User::ROLE_NAME

Если вы используете модуль amnah / yii2-user, вы можете использовать это:

Yii::$app->user->identity->role->name

Это даст вам текущее имя пользователя

Вы можете получить роль пользователя с помощью команды create.

    $roleModel = Yii::$app->db
    ->createCommand("Select * from auth_assignment where user_id='889'")
    ->queryOne();

    echo $roleModel['item_name'];

Это будет роль пользователя в назначении авторизации. Теперь вы можете проверить это, если пользователь является администратором, редактором или участником.

Другие вопросы по тегам