public function authenticate() { $user = $this->_dm->createQueryBuilder($this->_document)->field('email')->equals($this->_email)->field('active_bln')->equals(true)->getQuery()->execute(); $code = Zend_Auth_Result::FAILURE; $identity = ''; $messages = array(); if ($user->count()) { if ($user->count() > 1) { $code = Zend_Auth_Result::FAILURE_IDENTITY_AMBIGUOUS; $messages[] = Angel_Exception_User::returnDetail(Angel_Exception_User::EMAIL_NOT_UNIQUE); } else { $user = $user->getNext(); if ($user->password != crypt($this->_password, $user->salt)) { $code = Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID; $messages[] = Angel_Exception_User::returnDetail(Angel_Exception_User::PASSWORD_INCORRECT); } else { $code = Zend_Auth_Result::SUCCESS; $identity = $user->id; $messages[] = "Success"; } } } else { $code = Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND; $messages[] = Angel_Exception_User::returnDetail(Angel_Exception_User::EMAIL_NOT_EXIST); } return new Zend_Auth_Result($code, $identity, $messages); }
/** * a static method to wrap getDetail * user singlaton pattern */ public static function returnDetail($msg_code) { if (!self::$_user) { self::$_user = new Angel_Exception_User(''); } self::$_user->setMessageCode($msg_code); return self::$_user->getDetail(); }