/** * Pre-dipatch method that ensures that current user has ACL rights to * access the requested resource. * * @param AbstractRequest $request * @return void */ public function preDispatch(AbstractRequest $request) { if (null === $this->_acl) { $this->_acl = new \Rexmac\Zyndax\Acl\Acl(); } Zend_View_Helper_Navigation_HelperAbstract::setDefaultAcl($this->_acl); Zend_View_Helper_Navigation_HelperAbstract::setDefaultRole($this->_acl->getUser()->getRole()->getName()); Zend_Registry::set('acl', $this->_acl); #Logger::debug(__METHOD__.':: acl user = '******'testing' === APPLICATION_ENV) { // If we're testing and being redirected,we don't care about ACL // Why does this only happen during testing? May have something to do with redirect helper not exiting if ($response = \Zend_Controller_Front::getInstance()->getResponse()->getHeader('Location')) { return; } } if (!$this->_isUserAllowed($request)) { #Logger::debug(__METHOD__.':: ACL told us to get lost. Redirecting...'); // Redirect non-admins away from admin sub-domain $siteDomain = Zend_Registry::get('siteDomain'); if (0 === strpos($siteDomain, 'admin') && !$this->_acl->isUserAllowed('mvc:admin', 'view')) { return HelperBroker::getStaticHelper('redirector')->gotoUrl($request->getScheme() . '://' . str_replace('admin.', '', $siteDomain) . $request->getRequestUri()); } $request->setModuleName('default')->setControllerName('error')->setActionName('forbidden'); } }