-
Notifications
You must be signed in to change notification settings - Fork 39
Правила применяются к контроллеру, именно он у нас атомарен и является наименьшей единицей
Глобальных настроек нет
с версии 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 можно проверяется доступ к требуемому контроллеру, следовательно для контроллера к которому нет доступа ссылка не будет построена, данное поведение регулируется флагом, см. код помощника вида.
Acl
Application
Auth
Cache
Common
— Exception
— Collection
— Container
— Helper
— Options
— Singleton
Config
Controller
— Data
— Mapper
—— Crud
—— Rest
— Reflection
Crud
— Crud Table
Db
— Row
— Table
— Relations
— Query
Debug
EventManager
Grid
Http
Layout
Logger
Mailer
Messages
Nil
Proxy
Registry
Request
Response
Router
Session
Translator
Validator
View