/** * @static * @return NL_Acl */ public static function getInstance() { if (null === self::$_instance) { self::$_instance = new self(); } return self::$_instance; }
public function init() { $this->config = Zend_Registry::get("__CONFIG__"); /** @var $layoutHelper Zend_Layout_Controller_Action_Helper_Layout */ $layoutHelper = Zend_Controller_Action_HelperBroker::getStaticHelper('layout'); $this->layout = $layoutHelper->getLayoutInstance(); /** @var $viewRenderer Zend_Controller_Action_Helper_ViewRenderer */ $this->viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer'); if (Zend_Auth::getInstance()->hasIdentity()) { $this->identity = Zend_Auth::getInstance()->getIdentity(); $this->identityId = $this->identity->id; $role = $this->identity->role; } else { $role = "guest"; } $this->view->navigation()->setAcl(NL_Acl::getInstance())->setRole($role); }
public function preDispatch(Zend_Controller_Request_Abstract $request) { $identity = null; if (Zend_Auth::getInstance()->hasIdentity()) { $identity = Zend_Auth::getInstance()->getIdentity(); } elseif ($userId = NL_AuthAdapter::getCookie()) { // user id Exists $auth = Zend_Auth::getInstance(); $authAdapter = new NL_AuthAdapter(); $authAdapter->setUserId($userId); $result = $auth->authenticate($authAdapter); if ($result->isValid()) { $identity = Zend_Auth::getInstance()->getIdentity(); } } $acl = NL_Acl::getInstance(); $role = $identity ? $identity->role : "guest"; $module = $request->getModuleName(); if (is_null($module)) { $module = Zend_Controller_Front::getInstance()->getDefaultModule(); } $controller = $request->getControllerName(); $action = $request->getActionName(); if ($controller == "error") { // allow error controller return; } $resource = $module . ":" . $controller; if (!$acl->has($resource)) { throw new Exception("ACL Resource [" . $resource . "] undefined !", 501); } if (!$acl->isAllowed($role, $resource, $action)) { // throw new Exception("Not allowed to access [".$resource."] resource",501); $request->setModuleName($this->_noAuth['module']); $request->setControllerName($this->_noAuth['controller']); $request->setActionName($this->_noAuth['action']); // $request->setParam('controller', $this->_noAuth['controller']); // $request->setParam('view', 'no-auth'); } }