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

Рефакторинг кода авторизации

Использование аккаунта социальной сети для авторизации

Авторизация с помощью социальной сети не должна зависеть от типа аккаунта. В предыдущем посте используется код, где в конструкторе классa common/components/SocialContact.php выполняется оператор switch. При добавлении обработчика для новой социальной сети, придется дописывать код, при этом меняя класс.

Перепишем конструктор так, чтобы класс не нужно было менять и он не зависел от типов социальных сетей.


Как подключить авторизацию через аккаунт

OAuth2 авторизация с использованием аккаунта

Допустим, что вы уже зарегистрированы в известной социальной сети. То есть вы уже сообщили о себе, все, что считали нужным. Очевидно вам не хочется проходить процедуру еще раз на другом ресурсе.

Авторизация с помощью социальной сети позволяет избежать повторного заполнения формы регистрации. При этом защищенность вашего аккаунта в социальной сети никак не страдает. Вы просто подтверждаете, что вы это вы. Как подключить эту услугу к проекту используя расширение yiisoft/yii2-authclient?


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

Заключение

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

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

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