コード例 #1
0
 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);
     }
 }