/** * Recover password (ajax) * @param AjaxString $login Login or e-mail * @param AjaxString $captcha * @throws Exception */ public function indexAjaxAction(AjaxString $login, AjaxString $captcha) { // show recover form if (is_null($login)) { $this->root->appendChild($this->xml->createElement('recover')); Ajaxer::display(View::render($this->xml, 'auth-ajax', true)); return; } $error = false; // login's empty if ($login->val() === '') { Ajaxer::required('login'); $error = true; } if (!$captcha or $captcha->val() == '') { Ajaxer::required('captcha'); $error = true; } /** @var \Difra\Plugins\Capcha $captchaClass */ $captchaClass = \Difra\Plugger::getClass('captcha'); if (!$captchaClass::getInstance()->verifyKey($captcha->val())) { Ajaxer::invalid('captcha'); $error = true; } if ($error) { return; } // recover try { Recover::send($login->val()); Ajaxer::close(); Ajaxer::notify(Locales::get('auth/login/recovered')); } catch (Exception $ex) { Ajaxer::status('email', Locales::get('auth/login/' . $ex->getMessage()), 'problem'); } }
/** * Validate captcha * @return string */ private function verifyCaptcha() { /** @var \Difra\Plugins\Capcha $captcha */ $captcha = Plugger::getClass('captcha'); if (!$this->ignoreEmpty) { if (!$this->captcha) { return $this->failures['capcha'] = self::REGISTER_CAPTCHA_EMPTY; } elseif (!$captcha::getInstance()->verifyKey($this->captcha)) { return $this->failures['capcha'] = self::REGISTER_CAPTCHA_INVALID; } else { return $this->successful['capcha'] = self::REGISTER_CAPTCHA_OK; } } elseif ($this->captcha !== '') { if (!$captcha::getInstance()->verifyKey($this->captcha)) { return $this->failures['capcha'] = self::REGISTER_CAPTCHA_INVALID; } } return null; }