/** * Implements HTTP Basic auth */ public function preDispatch() { parent::preDispatch(); $action = strtolower($this->getRequest()->getActionName()); if (in_array($action, $this->authActions)) { $auth = \Zend_Auth::getInstance(); $this->auth = $auth; if (!$auth->hasIdentity()) { $config = array('accept_schemes' => 'basic', 'realm' => GEMS_PROJECT_NAME, 'nonce_timeout' => 3600); $adapter = new \Zend_Auth_Adapter_Http($config); $basicResolver = new \Zend_Auth_Adapter_Http_Resolver_File(); //This is a basic resolver, use username:realm:password //@@TODO: move to a better db stored authentication system $basicResolver->setFile(GEMS_ROOT_DIR . '/var/settings/pwd.txt'); $adapter->setBasicResolver($basicResolver); $request = $this->getRequest(); $response = $this->getResponse(); assert($request instanceof \Zend_Controller_Request_Http); assert($response instanceof \Zend_Controller_Response_Http); $adapter->setRequest($request); $adapter->setResponse($response); $result = $auth->authenticate($adapter); if (!$result->isValid()) { $adapter->getResponse()->sendResponse(); print 'Unauthorized'; exit; } } } }