public function change() { $old_password = ''; $password = ''; // Если установлена проверка старого пароля if ($this->register->get('front-end')->ignore_password_field->value == 0) { $password = !empty($_POST['password']) ? $_POST['password'] : ''; $old_password = !empty($_POST['old_password']) ? $_POST['old_password'] : ''; } else { $old_password = $this->aProfile->password->getValue(); } if (!empty($_POST['password'])) { $password = $_POST['password']; try { $this->changePassword($old_password, $password); UsersLogin::login($this->aProfile->login->getValue(), $password); $this->reloadCurrentSession(); } catch (Exception $e) { UsersLogin::logout(); $this->addAlert('Ошибка при изменении пароля'); $this->jump(Login::getUrl()); } // Для того, чтобы смена пароля отработала корректно $old_password = $password; } // Если передан email, то заменяем его if (!empty($_POST['email'])) { $this->changeEmail($old_password, $_POST['email']); } if (!empty($_POST['login'])) { $this->changeLogin($old_password, $_POST['login']); } $oUser = UsersLogin::getCurrentSession(); // Получаем список полей, которые запрещены к обновлению $fields = $this->register->get('front-end')->blocked_fields->value; $fields = explode(',', $fields); foreach ($_POST as $key => $row) { try { if (!in_array($key, $fields)) { $oUser->{$key}->setValue($row); } } catch (Exception $e) { } } if (!empty($_FILES)) { foreach ($_FILES as $key => $row) { try { $oUser->{$key}->setValue(''); } catch (Exception $e) { } } } $oUser->update(); EventController::callEvent('users_after_update_profile', $oUser, $_POST); $this->addSuccess('updateProfile'); if (!empty($_POST['redirectTo'])) { $this->jump($_POST['redirectTo']); } $this->jump('./'); }
public function __construct($urlInfo = array()) { parent::__construct($urlInfo); if (!UsersLogin::isLogined()) { /** * @todo Исправить проблему с зависимостью от MessageDictionary */ $this->addError(\plugins\MessageDictionary\Plugin::getMessage(self::MessageKey)); $this->jump(Login::getUrl()); } $this->reloadCurrentSession(); }