Как получить роль пользователя в Yii2?
Я искал и читал руководство по Yii2, но не нашел решения.
Вы можете получить роли для пользователя, используя функция getRolesByUser
Вы можете использовать это так
\Yii::$app->authManager->getRolesByUser($user_id);
defaultRoles
, он также вернет их, независимо от того, существуют ли какие-либо правила, которые фактически не позволяют им брать на себя эти роли!
- person TheStoryCoder; 25.06.2019
Вы можете использовать:
Yii::$app->authManager->getRolesByUser(Yii::$app->user->getId());
defaultRoles
? Если это так, то кажется, что правила не применяются, и, следовательно, вы увидите эти роли по умолчанию в любом случае....
- person TheStoryCoder; 25.06.2019
Я использую :
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;
}
Если вы используете модуль amnah/yii2-user, вы можете использовать это:
Yii::$app->user->identity->role->name
Это даст вам текущее имя роли пользователя
Хорошим и более наглядным решением будет установка констант всех ролей.
$userID = $user->getId();
array_keys(Yii::$app->authManager->getRolesByUser($userID))[0] == User::ROLE_NAME
Вы можете получить роль пользователя с помощью команды create.
$roleModel = Yii::$app->db
->createCommand("Select * from auth_assignment where user_id='889'")
->queryOne();
echo $roleModel['item_name'];
Это будет ваша роль пользователя в назначении аутентификации. Теперь вы можете проверить, является ли пользователь администратором, редактором или участником.