<?php class My_Controller_Plugin_Acl extends Zend_Controller_Plugin_Abstract { public function preDispatch(Zend_Controller_Request_Abstract $request) { $acl = Zend_Registry::get('acl'); $auth = Zend_Auth::getInstance(); $identity = $auth->getIdentity(); $roleName = 'guest'; else if ($identity->account_type == 1) $roleName = 'client'; else if ($identity->account_type == 2) $roleName = 'vip'; else if ($identity->account_type == 3) $roleName = 'admin'; $resourceName = $request->getControllerName(); $privilegeName = $request->getActionName(); if (!$acl->isAllowed($roleName, $resourceName, $privilegeName)) { //$request->setControllerName('error'); //$request->setActionName('index'); } } }
Jeśli zmienię akcję, to jest OK, ale jak tylko przełączę na jakikolwiek kontroler (nawet "index" i akcja "index") to mam Internal Server Error. Chcę po prostu zablokować dostęp do pewnych stron - nie wiem czy tak powinienem to robić...