CakePHP может автоматически обрабатывать все, если вы используете встроенные компоненты Auth и ACL. Для начала вы можете убедиться, что у вас есть файл app_controller.php в папке приложения. Моя выглядит примерно так:
<?php
class AppController extends Controller {
var $helpers = array('Form', 'Html', 'Javascript', 'Time');
var $components = array( 'Acl', 'Auth', 'Session', 'Cookie');
function beforeFilter() {
$this->Auth->authorize = 'actions';
$this->Auth->actionPath = 'controllers/';
$this->Auth->authError = ' Access Denied!';
$this->Auth->loginRedirect = '/registrations';
$this->__checkAuth();
}
private function __checkAuth() {
$currentUser = $this->Auth->user();
$currentUser = $currentUser['User'];
$this->set(compact('currentUser'));
}
}
?>
Если вы авторизуете «действия», попробуйте включить этот код в файл app_controller.php или создайте его, если у вас его еще нет. Затем начните просмотр, чтобы убедиться, что он внес какие-либо изменения.
Если у вас есть собственный код в beforeFilter каждого контроллера, вам также нужно добавить одну строку кода для каждого контроллера.
function beforeFilter(){
parent::beforeFilter();
}
Любой beforeFilter (даже пустой), помещенный в контроллер, будет переопределять beforeFilter в AppController, если вы специально не вызовите beforeFilter для AppController с помощью кода выше.
Вы также можете найти некоторые из лучших руководств по использованию ACL CakePHP здесь: http://aranworld.com/article/161/cakephp-acl-tutorial-what-is-it