MyRbacController.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. namespace app\commands;
  3. use Yii;
  4. use yii\console\Controller;
  5. /**
  6. * Инициализатор RBAC выполняется в консоли php yii my-rbac/init
  7. */
  8. class MyRbacController extends Controller {
  9. public function actionInit() {
  10. $auth = Yii::$app->authManager;
  11. $auth->removeAll(); //На всякий случай удаляем старые данные из БД...
  12. // Создадим роли админа и редактора новостей
  13. $admin = $auth->createRole('admin');
  14. $editor = $auth->createRole('editor');
  15. // запишем их в БД
  16. $auth->add($admin);
  17. $auth->add($editor);
  18. // Создаем разрешения. Например, просмотр админки viewAdminPage и редактирование новости updateNews
  19. $viewAdminPage = $auth->createPermission('viewAdminPage');
  20. $viewAdminPage->description = 'Просмотр админки';
  21. $updateNews = $auth->createPermission('updateNews');
  22. $updateNews->description = 'Редактирование новости';
  23. // Запишем эти разрешения в БД
  24. $auth->add($viewAdminPage);
  25. $auth->add($updateNews);
  26. // Теперь добавим наследования. Для роли editor мы добавим разрешение updateNews,
  27. // а для админа добавим наследование от роли editor и еще добавим собственное разрешение viewAdminPage
  28. // Роли «Редактор новостей» присваиваем разрешение «Редактирование новости»
  29. $auth->addChild($editor,$updateNews);
  30. // админ наследует роль редактора новостей. Он же админ, должен уметь всё! :D
  31. $auth->addChild($admin, $editor);
  32. // Еще админ имеет собственное разрешение - «Просмотр админки»
  33. $auth->addChild($admin, $viewAdminPage);
  34. // Назначаем роль admin пользователю с ID 1
  35. $auth->assign($admin, 1);
  36. // Назначаем роль editor пользователю с ID 2
  37. $auth->assign($editor, 2);
  38. }
  39. }