public function actionReset() { $message_name = "reset"; $this->title = "Восстановление пароля"; $this->meta_desc = "Восстановление пароля пользователя."; $this->meta_key = "восстановление пароля, восстановление пароля пользователя"; $hornav = $this->getHornav(); //горизонтальная навигация $hornav->addData("Восстановление пароля"); if ($this->request->reset) { //проверка отправлена ли форма на востановление $user_db = new UserDB(); $user_db->loadOnEmail($this->request->email); //ниже отправка письма if ($user_db->isSaved()) { $this->mail->send($user_db->email, array("user" => $user_db, "link" => URL::get("reset", "", array("email" => $user_db->email, "key" => $user_db->getSecretKey()), false, Config::ADDRESS)), "reset"); } $pm = new PageMessage(); $pm->hornav = $hornav; $pm->header = "Восстановление пароля"; $pm->text = "Инструкция по восстановлению пароля выслана на указанный e-mail адрес."; $this->render($pm); } elseif ($this->request->key) { //пользователь получил письмо и пытается загрузиться по ссылке $user_db = new UserDB(); $user_db->loadOnEmail($this->request->email); if ($user_db->isSaved() && $this->request->key === $user_db->getSecretKey()) { if ($this->request->reset_password) { $checks = array(array($this->request->password_reset, $this->request->password_reset_conf, "ERROR_PASSWORD_CONF")); $user_db = $this->fp->process($message_name, $user_db, array(array("setPassword()", $this->request->password_reset)), $checks); if ($user_db instanceof UserDB) { $user_db->login(); $this->redirect(URL::get("sreset")); } } $form = new Form(); $form->hornav = $hornav; $form->header = "Восстановление пароля"; $form->name = "reset_password"; $form->action = URL::current(); @($from->message = $this->fp->getSessionMessage($message_name)); $form->password("password_reset", "Новый пароль:"); $form->password("password_reset_conf", "Повторите пароль:"); $form->submit("Далее"); $form->addJSV("password_reset", $this->jsv->password("password_reset_conf")); $this->render($form); } else { $pm = new PageMessage(); $pm->hornav = $hornav; $pm->header = "Неверный ключ"; $pm->text = "Попробуйте ещё раз, если ошибка будет повторяться, то обратитесь к администрации."; $this->render($pm); } } else { $form = $this->getFormEmail("Восстановление пароля", "reset", $message_name); $form->hornav = $hornav; $this->render($form); } }