Как настроить ролевой доступ. - vorst.ru

Настройка RBAC


rbac - подключение ролевого доступа

При создании сайта часто возникает задача ограничения доступа пользователей к определенным действиям. Как настроить ролевой доступ при создании сайта на Yii, с чего начать, что важно не упустить из виду.

Настройка RBAC

rbac - подключение ролевого доступа

В большом количестве задач необходимо в backend-части приложения разрешать одним группам пользователей выполнять только определенные действия. Другим может быть разрешено чуть больше. И так далее, до админа.

Именно распределение прав для групп пользователей и будет рассмотрено в паре-тройке статей. В качестве примера будет использоваться всего две роли.


Речь о настоящем блоге. Поэтому роли - это Автор и Админ. Админ может все. Автор может:

  • разместить статью,
  • просмотреть список собственных статей,
  • посмотреть и отредактировать свою статью,
  • просмотреть список комментариев к своим статьям,
  • ответить на комментарий к своей статье,
  • редактировать собственный комментарий,
  • редактировать свой профайл.

Data Structure

Пользователь (User), кроме прочего, имеет поле group_id с двумя возможными значениями: 1- Админ, 2 - Автор.

Еще у нас есть Статьи (Post) и Комментарии (Comment). Статья имеет поле author_id, для связи с создавшим ее Автором. Комментарии оставляют не зарегистрированные посетители сайта, заполняя при этом Имя и Email.

Settings

Если у вас basic шаблон Yii2, то в файле /commands/RbacController.php должны определяться роли и разрешения на доступ, а в каталоге /rbac должны располагаться классы правил доступа и туда же записываются сформированные файлы правил.

Для шаблона basic подключаем менеджер прав доступа в файле /config/web.php.

$config = [
  ...
  'components' => [
    'authManager' => [
      'class' => 'yii\rbac\PhpManager',
      'defaultRoles' => ['author', 'admin'],
    ],

Для advanced шаблона структура каталогов немного другая: /console/controllers/RbacController.php и /console/rbac.

А вот подключение отличается существенно. Во-первых, нужно подключить менеджер для консоли в файле /console/config/main.php, чтобы сформировать правила.

$config = [
  ...
  'components' => [
    'authManager' => [
      'class' => 'yii\rbac\PhpManager',
      'defaultRoles' => ['author', 'admin'],
    ],

Во-вторых, в папке, для которой нужен ролевой доступ. В нашем случае для /backend/config/main.php.

$config = [
  ...
  'components' => [
    'authManager' => [
      'class' => 'yii\rbac\PhpManager',
      'defaultRoles' => ['author', 'admin'],
      'itemFile' => __DIR__ . '/../../console/rbac/items.php',
      'ruleFile' => __DIR__ . '/../../console/rbac/rules.php',
    ],

Если не указать пути к файлам itemFile и ruleFile, то никакой ошибки выдаваться не будет. Просто менеджер не будет работать.

Заключение

Теперь можно приступать к созданию разрешений, ролей, описанию и подключению правил. Но об этом в следующей статье.

Оставьте комментарий