Skip to content
Anton edited this page May 19, 2016 · 19 revisions

Описание

Правила применяются к контроллеру, именно он у нас атомарен и является наименьшей единицей

Настройки

Глобальных настроек нет

Использование

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

Clone this wiki locally