function __construct() { if (User::isAuth()) { MG::redirect('/'); } // Шаг первый. $form = 1; $fPass = new Models_Forgotpass(); // Ввторой шаг, производящий проверку введеного электронного адреса. if (URL::getQueryParametr('forgotpass')) { $email = URL::getQueryParametr('email'); if ($userInfo = USER::getUserInfoByEmail($email)) { //Если введенных адрес совпадает с зарегистрированным в системе, то $form = 0; $message = 'Инструкция по восстановлению пароля была отправлена на <strong>' . $email . '</strong>'; $hash = $fPass->getHash($email); //а) Случайный хэш заносится в БД. $fPass->sendHashToDB($email, $hash); $siteName = MG::getOption('sitename'); $emailMessage = MG::layoutManager('email_forgot', array('siteName' => $siteName, 'email' => $email, 'hash' => $hash, 'userId' => $userInfo->id, 'link' => SITE . '/forgotpass?sec=' . $hash . '&id=' . $userInfo->id)); $emailData = array('nameFrom' => $siteName, 'emailFrom' => MG::getSetting('noReplyEmail'), 'nameTo' => 'Пользователю сайта ' . $siteName, 'emailTo' => $email, 'subject' => 'Восстановление пароля на сайте ' . $siteName, 'body' => $emailMessage, 'html' => true); //б) На указанный электронный адрес отправляется письмо со сылкой на страницу восстановления пароля. $fPass->sendUrlToEmail($emailData); } else { $form = 0; $error = 'К сожалению, такой логин не найден<br> Если вы уверены, что данный логин существует, пожалуйста, свяжитесь с нами.'; } } // Шаг 3. Обработка перехода по ссылки. Принимается id пользователя и сгенерированный хэш. if ($_GET) { $userInfo = USER::getUserById(URL::getQueryParametr('id')); $hash = URL::getQueryParametr('sec'); // Если присланный хэш совпадает с хэшом из БД для соответствующего id. if ($userInfo->restore == $hash) { $form = 2; // Меняе в БД случайным образом хэш, делая невозможным повторный переход по ссылки. $fPass->sendHashToDB($userInfo->email, $fPass->getHash('0')); $_SESSION['id'] = URL::getQueryParametr('id'); } else { $form = 0; $error = 'Некорректная ссылка. Повторите заново запрос восстановления пароля.'; } } // Шаг 4. обрабатываем запрос на ввод нового пароля if (URL::getQueryParametr('chengePass')) { $form = 2; $person = new Models_Personal(); $msg = $person->changePass(URL::getQueryParametr('newPass'), $_SESSION['id'], true); if ('Пароль изменен' == $msg) { $form = 0; $message = $msg . '! ' . 'Вы можете войти в личный кабинет по адресу <a href="' . SITE . '/enter" >' . SITE . '/enter</a>'; $fPass->activateUser($_SESSION['id']); unset($_SESSION['id']); } else { $error = $msg; } } $this->data = array('error' => $error, 'message' => $message, 'form' => $form, 'meta_title' => 'Восстановление пароля', 'meta_keywords' => $model->currentCategory['meta_keywords'] ? $model->currentCategory['meta_keywords'] : "забыли пароль, восстановить пароль, восстановление пароля", 'meta_desc' => $model->currentCategory['meta_desc'] ? $model->currentCategory['meta_desc'] : "Если вы забыли пароль от личного кабинета, его модно восстановить с помощью формы восстановления паролей."); }
function __construct() { $lang = MG::get('lang'); $settings = MG::get('settings'); $this->lang = $lang; $status = 0; if (User::isAuth()) { $order = new Models_Order(); $status = 3; //обработка запроса на изменение данных пользователя if (URL::getQueryParametr('userData')) { $customer = URL::getQueryParametr('customer'); $userData = array('name' => URL::getQueryParametr('name'), 'sname' => URL::getQueryParametr('sname'), 'address' => URL::getQueryParametr('address'), 'phone' => URL::getQueryParametr('phone'), 'nameyur' => $customer == 'yur' ? URL::getQueryParametr('nameyur') : '', 'adress' => $customer == 'yur' ? URL::getQueryParametr('adress') : '', 'inn' => $customer == 'yur' ? URL::getQueryParametr('inn') : '', 'kpp' => $customer == 'yur' ? URL::getQueryParametr('kpp') : '', 'bank' => $customer == 'yur' ? URL::getQueryParametr('bank') : '', 'bik' => $customer == 'yur' ? URL::getQueryParametr('bik') : '', 'ks' => $customer == 'yur' ? URL::getQueryParametr('ks') : '', 'rs' => $customer == 'yur' ? URL::getQueryParametr('rs') : ''); if (USER::update(User::getThis()->id, $userData)) { $message = 'Данные успешно сохранены'; } else { $error = 'Не удалось сохранить данные ' . $this->_newUserData['sname']; } } // Обработка запроса на изменения пароля. if (URL::getQueryParametr('chengePass')) { if (USER::auth(User::getThis()->email, URL::getQueryParametr('pass'))) { $person = new Models_Personal(); $message = $person->changePass(URL::getQueryParametr('newPass'), User::getThis()->id); } else { $error = 'Неверный пароль'; } } // Обработка запроса на изменения способа оплаты. if (URL::getQueryParametr('changePaymentId')) { $order = new Models_Order(); $status = $order->updateOrder(array('payment_id' => $_POST['changePaymentId'], 'id' => $_POST['orderId'])); $result = array('status' => $status, 'comment' => 2, 'orderStatus' => 3); echo json_encode($result); MG::disableTemplate(); exit; } // Обработка AJAX запроса на закрытие заказа. if (URL::getQueryParametr('delOK')) { $comment = 'Отменено покупателем, по причине <br>"' . URL::getQueryParametr('comment') . '"'; // Пересчитываем остатки продуктов из заказа. $orderModel = new Models_Order(); $orderModel->refreshCountProducts(URL::getQueryParametr('delID'), 4); $res = DB::query(' UPDATE `' . PREFIX . 'order` SET close_date = now(), status_id = 4, comment = "%s" WHERE id = %d AND user_email = "%s"', $comment, URL::getQueryParametr('delID'), User::getThis()->email); if ($res) { $status = true; } if ($comment) { $comm = "<b>Комментарий: " . $comment . "</b>"; } $result = array('status' => $status, 'comment' => $comm, 'orderStatus' => $lang[$order->getOrderStatus(array('status_id' => 4))]); $orderModel->sendMailOfUpdateOrder(URL::getQueryParametr('delID')); echo json_encode($result); MG::disableTemplate(); exit; } // Отображение данных пользователя. $orderArray = $order->getOrder('user_email = "' . User::getThis()->email . '"', TRUE); if (is_array($orderArray)) { foreach ($orderArray as $orderId => $orderItems) { $orderArray[$orderId]['string_status_id'] = $order->getOrderStatus($orderItems); $paymentArray = $order->getPaymentMethod($orderItems['payment_id']); $orderArray[$orderId]['name'] = $paymentArray['name']; $orderArray[$orderId]['paided'] = $order->getPaidedStatus($orderItems); } } if (!User::getThis()->activity) { $status = 2; unset($_SESSION['user']); } if (User::getThis()->blocked) { $status = 1; unset($_SESSION['user']); } $paymentList = $order->getPaymentBlocksMethod(); } else { MG::redirect('/enter'); } $this->data = array('error' => !empty($error) ? $error : '', 'message' => !empty($message) ? $message : '', 'status' => !empty($status) ? $status : '', 'userInfo' => User::getThis(), 'orderInfo' => !empty($orderArray) ? $orderArray : '', 'currency' => $settings['currency'], 'paymentList' => $paymentList, 'meta_title' => 'Личный кабинет', 'meta_keywords' => !empty($model->currentCategory['meta_keywords']) ? $model->currentCategory['meta_keywords'] : "заказы,личные данные, личный кабинет", 'meta_desc' => !empty($model->currentCategory['meta_desc']) ? $model->currentCategory['meta_desc'] : "В личном кабинете нашего сайта вы сможете отслеживать состояние заказов и менять свои данные"); }