Download the PHP package carono/yii2-rbac without Composer
On this page you can find all versions of the php package carono/yii2-rbac. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package yii2-rbac
yii2-rbac
Очередная реализация RBAC для yii2.
ВВЕДЕНИЕ
Этот компонент помогает распределить доступы по конкретным action в контроллерах по ролям, в конфигах прописываются доступы, выполняется команда для сброса прав, и база наполнена всеми указанными ролями, контроллерами и акшенами. Можно не прописывать каждый action в конкретном контроллере, а указать '*' и команда соберёт все возможные.
УСТАНОВКА
composer require carono/yii2-rbac
Не забудьте провести миграцию для таблиц
yii migrate --migrationPath=@yii/rbac/migrations
НАСТРОЙКА
В config/console.php
для basic редакции и в console/main.php
для advanced, прописываем
После настройки, необходимо выполнить yii rbac
чтобы создались роли и создались доступы по контроллерам.
Если настройки в конфиге изменились, то необходимо каждый раз вызывать команду. Все роли и доступы пересоздаются заново.
При этом, уже навешанные на пользователей роли не удаляются.
В базе создаются доступы вида Module:Controller:Action
, если в настройках указывается '*' в любой части, то собираются
все модули, контроллеры или акшены.
ОСОБЕННОСТИ
Все контроллеры без модулей, всё же имеют модуль, которым является Yii::$app, поэтому SiteController->actionIndex формирует
доступ как Basic:Site:Index
, если в конфиге (web.php) изменить id вашего приложения с basic на my-app, то нужно и в настройках
контроллера указывать соответственно: MyApp:Site:Index
КАК ПРИМЕНЯТЬ
В behaviors контроллера, можно использовать фильтр, который идет в комплекте
или проверить самостоятельно
ХЕЛПЕРЫ
- RoleManager::formPermissionByAction(Yii::$app->controller->action) = Basic:Site:index
- RoleManager::checkAccessByUrl('/site/index?page=1', $user) = true, передаем ссылки или массив, как для Url::to
- RoleManager::checkAccess('Basic:Site:Index', $user), так же принимает и класс Action
$user - класс прописанный у вас в конфигах - Yii::$app->user->identityClass, так же может быть primaryKey модели или username
РАБОТА С ADVANCED РЕДАКЦИЕЙ
Не сильно отличается от basic, только доступ может состоять как из 3х так и из 4х секций, Application:Module:Controller:Action