В отличии от некоторых других популярных фреймворков (например, Yii), в Laravel из коробки нет инструментов для работы с ролями пользователей. В этой небольшой заметке я расскажу о сторонних решениях по управлению ролями в Laravel 5.1.
Управление ролями пользователей — RBAC для Laravel 5.1
https://github.com/SmartCrowd/laravel-rbac
Этот компонент является адаптацией встроенного в Yii2 модуля управления ролями пользователей. Модуль реализует подход к ролям в стиле RBAC.
RBAC — Управление доступом на основе ролей (Role Based Access Control) — развитие политики избирательного управления доступом, при этом права доступа субъектов системы на объекты группируются с учётом специфики их применения, образуя роли.
В классическом RBAC рассматриваются 3 сущности:
объект, к которому надо назначить или проверить права доступа, например, статья
субъект, который следует наделить правами на объект, например, пользователь
действие — то, что может сделать субъект над объектом, например, редактировать
Для принятия решения по определенному действию может потребоваться использование бизнес-правила. Бизнес правило позволяет выполнить ряд проверок на возможность воздейсвтия субъекта на объект. Например, пользователь может редактировать только свои статьи. В бизнес-правиле следует проверять является ли пользователь автором статьи.
Замечу, что возможность редактировать любые статьи (администратор) и только свои (пользователь) — это разные действия в RBAC.
Элементарные действия могут объединяться в роли, которые уже можно присвоить пользователям и сохранить, например в БД.
Немного подробнее о модуле.
Модуль Laravel RBAC позволяет описывать права и роли пользователей, создавать вложенные роли. Из laravel-специфичных особенностей следует отметить наличие директив для проверки прав доступа прямо из Blade-шаблона, использование контроля доступа в middleware. Также модуль может генерировать права доступа на основе роута и неявно проверять их для текущего пользователя в миддлвари.
Простое управление ролями для Laravel
https://github.com/appzcoder/laravel-roles
Простой менеджер ролей для Laravel. В отличии от предыдущего модуля, данная разработка реализует простейший ACL, позволяя проверять доступ к ресурсу только по роли пользователя.
Управление ролями в Laravel с админкой
https://github.com/romanbican/roles
Этот модуль, в отличие от предыдущих, предлагает работу с ролями и правами через модели. Модуль предоставляет средства (а точнее заготовленные модели) для создания, обновления и присоединения друг к другу прав и ролей.
Единственное что стоит исправить это то что у https://github.com/romanbican/roles, нет админки или я просто не внимательно смотрел?