function editAction() { if (!User::admin()) { HTTP::redirect('backend/' . Route::controller() . '/login'); } $user = User::info(); if ($_POST) { $post = $_POST; if (strlen(Arr::get($post, 'password')) < $this->password_length or strlen(Arr::get($post, 'new_password')) < $this->password_length or strlen(Arr::get($post, 'confirm_password')) < $this->password_length or !User::factory()->check_password(Arr::get($post, 'password'), $user->password) or Arr::get($post, 'new_password') != Arr::get($post, 'confirm_password')) { Message::GetMessage(0, 'Вы что-то напутали с паролями!'); HTTP::redirect('backend/' . Route::controller() . '/edit'); } if (!strlen(trim(Arr::get($post, 'name')))) { Message::GetMessage(0, 'Имя не может быть пустым!'); HTTP::redirect('backend/' . Route::controller() . '/edit'); } if (!strlen(trim(Arr::get($post, 'login')))) { Message::GetMessage(0, 'Логин не может быть пустым!'); HTTP::redirect('backend/' . Route::controller() . '/edit'); } $count = DB::select(array(DB::expr('COUNT(id)'), 'count'))->from('users')->where('id', '!=', $user->id)->where('login', '=', Arr::get($post, 'login'))->count_all(); if ($count) { Message::GetMessage(0, 'Пользователь с таким логином уже существует!'); HTTP::redirect('backend/' . Route::controller() . '/edit'); } $data = array('name' => Arr::get($post, 'name'), 'login' => Arr::get($post, 'login'), 'password' => User::factory()->hash_password(Arr::get($post, 'new_password'))); Common::update('users', $data)->where('id', '=', $user->id)->execute(); Message::GetMessage(1, 'Вы успешно изменили данные!'); HTTP::redirect('backend/' . Route::controller() . '/edit'); } $this->_toolbar = Widgets::get('Toolbar/Edit'); $this->_seo['h1'] = 'Мой профиль'; $this->_seo['title'] = 'Редактирование личных данных'; $this->setBreadcrumbs('Мой профиль', 'backend/' . Route::controller() . '/' . Route::action()); $this->_content = View::tpl(array('obj' => $user), 'Auth/Edit'); }
public function change_passwordAction() { if (!U::info()) { return Config::error(); } $this->addMeta('Изменить пароль'); $this->_content = View::tpl(array(), 'User/ChangePassword'); }
public function change_passwordAction() { // Check incoming data $oldPassword = Arr::get($this->post, 'old_password'); if (!User::factory()->check_password($oldPassword, User::info()->password)) { $this->error('Старый пароль введен неверно!'); } $password = trim(Arr::get($this->post, 'password')); if (mb_strlen($password, 'UTF-8') < conf::get('main.password_min_length')) { $this->error('Пароль не может быть короче ' . conf::get('main.password_min_length') . ' символов!'); } if (User::factory()->check_password($password, User::info()->password)) { $this->error('Нельзя поменять пароль на точно такой же!'); } $confirm = trim(Arr::get($this->post, 'confirm')); if ($password != $confirm) { $this->error('Поля "Новый пароль" и "Подтвердите новый пароль" должны совпадать!'); } // Change password for new User::factory()->update_password(User::info()->id, $password); // Send email to user with new data $mail = DB::select()->from('mail_templates')->where('id', '=', 6)->where('status', '=', 1)->as_object()->execute()->current(); if ($mail) { $from = array('{{site}}', '{{ip}}', '{{date}}', '{{password}}'); $to = array(Arr::get($_SERVER, 'HTTP_HOST'), System::getRealIP(), date('d.m.Y H:i'), $password); $subject = str_replace($from, $to, $mail->subject); $text = str_replace($from, $to, $mail->text); Email::send($subject, $text, $user->email); } $this->success('На указанный E-Mail адрес высланы новые данные для входа'); }