Example #1
0
 /**
  * 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');
     }
 }