Для назначения разрешения роли в Yii используется механизм RBAC (Role-Based Access Control). RBAC позволяет управлять доступом пользователей к определенным разрешениям в приложении.
Для начала необходимо настроить RBAC в Yii. Для этого нужно добавить компонент authManager
в файле конфигурации config/main.php
. Например:
'authManager' => [ 'class' => 'yiirbacPhpManager', 'defaultRoles' => ['guest'], ],
После этого необходимо создать таблицу для хранения данных RBAC. Для этого можно использовать миграцию, например:
yii migrate --migrationPath=@yii/rbac/migrations/
Теперь можно создавать разрешения и роли в коде приложения. Для этого нужно получить экземпляр класса yiirbacManagerInterface
, который реализует интерфейс для управления разрешениями и ролями. Например:
$authManager = Yii::$app->authManager;
Создание разрешения:
$createPost = $authManager->createPermission('createPost'); $createPost->description = 'Create a post'; $authManager->add($createPost);
Создание роли:
$admin = $authManager->createRole('admin'); $authManager->add($admin);
Назначение разрешения роли:
$authManager->addChild($admin, $createPost);
Теперь, если пользователь имеет роль admin
, то он будет иметь разрешение createPost
.
Также можно проверить, имеет ли пользователь определенное разрешение:
if(Yii::$app->user->can('createPost')){ // пользователь имеет разрешение } else { // пользователь не имеет разрешение }
Или можно проверить, принадлежит ли пользователь определенной роли:
if(Yii::$app->user->can('admin')){ // пользователь имеет роль } else { // пользователь не имеет роль }
Таким образом, назначение разрешения роли RBAC в Yii достигается с использованием компонента authManager
, созданием разрешений и ролей, а затем привязкой разрешения к роли с помощью метода addChild
. После этого можно проверять разрешения пользователя приложения.