Настраиваем доступ к web приложению на основе ролей Yii 2. Часть 3. Разрешения

Сегодня мы разберём третий раздел работы с RBAC в Yii 2, а именно так называемые «разрешения».

Понятие разрешения

Разрешение (permission) – это право пользователя на выполнение того или иного конкретного действия в системе. Например, создание раздела или записи на сайте, просмотр какого-то раздела, добавление комментария к статье и т.д.

Разрешения позволяют более тонко настроить доступ к web приложению, чем роли, т.к. они в отличие от роли привязаны к конкретным действиям на сайте.

Создание разрешений

Разрешения создаются аналогично ролям [1], только с использованием метода addPermission.

Добавление разрешений

Разрешения можно добавить как роли, так и непосредственно конкретному пользователю.

Добавление разрешения к роли выполняется при помощи метода addChild.

Добавление разрешения напрямую пользователю производится при помощи метода assign, только в место роли первым параметром передаётся разрешение.

Проверка разрешений

Разрешение проверяются также каr и роли при помощи метода can.

Если разрешения используются для управления доступом к действиям контроллера и имя разрешения и действия совпадают, то можно выполнять проверку в методе beforeAction контроллера.

Если для управления доступом к действиям контроллера используются только разрешения и проверка реализована с применением метода beforeAction, то в методе behaviors контроллера можно убрать правило access, так как оно актуально в первую очередь для ролей и в данном случае будет только дублировать функционал реализованный в beforeAction.

В остальных случаях проверка разрешений в правиле access выполняется также, как и для ролей [1].

Итак, мы познакомились с разрешениями. Они позволяют выполнять более тонкую настройку доступа в web приложении. Следующая и, вероятнее всего, последняя часть данного цикла статей будет посвящена механизму наследования ролей.

 

Источники:
  1. Настраиваем доступ к web приложению на основе ролей Yii 2. Часть 1. Общие механизмы работы.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *