_acl = new Zend_Acl(); $xml = Zend_Xml_Security::scanFile($rolefile); /* Roles file format: */ foreach($xml->role as $role) { $this->_acl->addRole(new Zend_Acl_Role((string)$role["id"])); foreach($role->user as $user) { $this->_users[(string)$user["name"]] = array("password" => (string)$user["password"], "role" => (string)$role["id"]); } } } /** * Get ACL with roles from XML file * * @return Zend_Acl */ public function getAcl() { return $this->_acl; } /** * Perform authentication * * @throws Zend_Auth_Adapter_Exception * @return Zend_Auth_Result * @see Zend_Auth_Adapter_Interface#authenticate() */ public function authenticate() { if (empty($this->_username) || empty($this->_password)) { /** * @see Zend_Auth_Adapter_Exception */ require_once 'Zend/Auth/Adapter/Exception.php'; throw new Zend_Auth_Adapter_Exception('Username/password should be set'); } if(!isset($this->_users[$this->_username])) { return new Zend_Auth_Result(Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND, null, array('Username not found') ); } $user = $this->_users[$this->_username]; if($user["password"] != $this->_password) { return new Zend_Auth_Result(Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID, null, array('Authentication failed') ); } $id = new stdClass(); $id->role = $user["role"]; $id->name = $this->_username; return new Zend_Auth_Result(Zend_Auth_Result::SUCCESS, $id); } }