'default', 'controller' => 'Authorize', 'action' => 'NotAuthorized'); private $_noacl = array('module' => 'default', 'controller' => 'Authorize', 'action' => 'Signin'); public function __construct($auth, $acl, $view) { $this->_auth = $auth; $this->_acl = $acl; $this->_view = $view; } public function preDispatch(Zend_Controller_Request_Abstract $request) { if ($this->_auth->hasIdentity()) { $identity = $this->_auth->getInstance()->getIdentity(); $this->_view->role = strtolower($identity->role); } else { $this->_view->role = 'guest'; } $this->_view->menu->setAllow($this->_view->role, $this->_view, $this->_acl); if ($this->_view->role !== "guest") { $this->_view->menu->deny("signin"); } if (!$this->_acl->has($resource = strtolower($request->controller))) { $resource = null; } if (!$this->_acl->isAllowed($this->_view->role, $resource, strtolower($request->action))) { if ($this->_auth->hasIdentity()) { $request->setModuleName($this->_noauth['module']); $request->setControllerName($this->_noauth['controller']); $request->setActionName($this->_noauth['action']); } else { $request->setModuleName($this->_noacl['module']); $request->setControllerName($this->_noacl['controller']); $request->setActionName($this->_noacl['action']); } } } }