Exemplo n.º 1
0
 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');
 }
Exemplo n.º 2
0
 public function change_passwordAction()
 {
     if (!U::info()) {
         return Config::error();
     }
     $this->addMeta('Изменить пароль');
     $this->_content = View::tpl(array(), 'User/ChangePassword');
 }
Exemplo n.º 3
0
 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 адрес высланы новые данные для входа');
 }