34 lines
1 KiB
PHP
34 lines
1 KiB
PHP
<?php
|
||
|
||
/**
|
||
* Фильтр действий
|
||
*/
|
||
class ActionAccess
|
||
{
|
||
public $access = array();
|
||
|
||
function __construct($processor)
|
||
{
|
||
$this->processor = $processor;
|
||
}
|
||
|
||
/**
|
||
* Проверка доступных действий для пользователя
|
||
* !! Реализация класса проверки действий не должна быть внутри Контроллера!!!
|
||
* Информация о доступе может быть в файле, базе данных и т.д.
|
||
*/
|
||
function checkAction($action)
|
||
{
|
||
// Импликация !! http://ru.wikipedia.org/wiki/Импликация
|
||
return (!isset($this->access[$action]) || in_array(UserAccess::$access, $this->access[$action]));
|
||
}
|
||
|
||
function execute(HTTPRequest $request)
|
||
{
|
||
$action = $request->getAction();
|
||
if(! $this->checkAction($action)) {
|
||
$request->set('action', 'index');
|
||
}
|
||
return $this->processor->execute($request);
|
||
}
|
||
}
|