-
Notifications
You must be signed in to change notification settings - Fork 35
Permissions
butschster edited this page Mar 25, 2014
·
1 revision
В KodiCMS есть инструмент для проверки прав доступа к данным, разделам сайта и т.д.
По умолчанию идет проверка доступа ко всем экшенам контроллеров CMS для пользователей без роли администратора.
class Controller_Test extends Controller_System_Backend {
// Экшены для которых разрешен доступ без проверка прав
public $allowed_actions = array(
'not_secured'
);
public function before()
{
// Динамически настраиваемые права доступа к экшену
if(...)
{
$this->allowed_actions[] = 'dynamic';
}
parent::before();
}
public function action_index()
{
}
public function action_dynamic()
{
}
// не будет осуществлена проверка доступа, т.к. содержится
// в массиве $allowed_actions
public function action_not_secured()
{
....
if( ! ACL::check('test.view') )
{
// В качестве необязательно параметра можно указать текст который увидит пользователь
$this->_deny_access();
}
}
}
Права доступа к контроллерам (Разделам) настраиваются в разделе "Роли". Для того, чтобы настройки прав появились в разделе "Роли" их необходимо описать в конфиге config\permissions.php
return array(
'test' => array(
array(
'action' => 'index',
'description' => 'View test action index'
),
array(
'action' => 'dynamic',
'description' => 'View test action dynamic'
),
....
)
);
При конвертации конфига все права имеют вид:
- test.index,
- test.dynamic
- ....
и их проверка осуществляется как Acl::check('test.index')
При проверке прав доступа к экшену контроллера происходит вызов Acl::check( $this->request() )
, где реквест преобразуется в строку controller.action
или directory.controller.action
если находится не корневой папке контроллера.