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

Как определить правило для RBAC

Выполнять действие или нет

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

Если вы Админ, то у вас есть общее разрешение create. Оно дает право добавлять данные к любым моделям. Если вы Автор, то такое разрешение давать не стоит. Автор не может, например, добавить новую рубрику.


Определение разрешений на доступ и ролей для пользователей

Задание доступа только к определенным действиям

Разработка бекенда сайта часто подразумевает ограничение прав при редактировании контента.

Ролевая модель имеет иерархию. Сначала прав не много, потом чуть больше, наконец доступно все. Права (или разрешения) - это константы, которые связаны с конкретной ролью. Если за ролью закреплено разрешение, то действие может быть выполнено.


Как подключить RBAC

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

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

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



Поиск



Как подключить 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, то никакой ошибки выдаваться не будет. Просто менеджер не будет работать.

Заключение

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

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

Только авторизованные пользователи могут оставлять комментарии. Пожалуйста авторизуйтесь или пройдите регистрацию.