Acl
Описание
Правила применяются к контроллеру, именно он у нас атомарен и является наименьшей единицей
Настройки
Глобальных настроек нет
Использование
с версии 0.6.0 изменился способ вызова - теперь только через Proxy
Для контроллеров, к которым необходимо ограничить доступ, необходимо описать привилегию в doc'блоке которую он реализует:
return /** * @privilege Edit */ function (...) { }
Контроллеры, которые реализуют единую привилегию может быть несколько - к примеру для изменения статуса новости и редактирования это будет edit. При этом привилегия привязана к модулю, т.е. привилегия edit в модуле users и pages это разные привилегии.
Модуль для редактирования прав пользователей реализован в skeleton.
с версии 7.0.0 появилась возможность определять привилегии для использования внутри контроллера
Если требуется проверять ограничение в доступе внутри контроллера можно добавить привилегии с использованием @acl, а проверку делать вручную:
use Bluz\Proxy\Acl; return /** * File /modules/users/controllers/profile.php * * @acl read * @acl edit */ function (...) { if ($this->isAllowed('read')) { // if user has privilege `users:read` } if ($this->isAllowed('edit')) { // if user has privilege `users:edit` } }
При построении ссылок используя View Helper Url можно проверяется доступ к требуемому контроллеру, следовательно для контроллера к которому нет доступа ссылка не будет построена, данное поведение регулируется флагом, см. код помощника вида.