Неправильная работа авторизации через соц. сети

Правила раздела: faq.php?mode=okay
Модератор: Модераторы

Julius123 M
Julius123 M
Репутация: 20
Сообщения: 225
Зарегистрирован: 05.02.2017
С нами: 7 лет 1 месяц

Сообщение #1 Julius123 » 27.07.2019, 19:19

Всем привет. Есть бесплатная доработка, которая создавалась еще на Simpla CMS.

Код в LoginView.php:
Спойлер

Код: Выделить всё

// Вход через ULogin
   elseif(isset($_POST['token']))
   {
    $s = file_get_contents('https://ulogin.ru/token.php?token='.$_POST['token'].'&host='.$_SERVER['HTTP_HOST']);
    $user = json_decode($s, true);
 
    if (isset($user['identity'])){
        $name = $user['first_name'].' '.$user['last_name'];
        $email = $user['email'];
        $phone = $user['phone'];
        $password = md5($user['identity']);
 
        // Проверяем есть ли в БД такой e-mail
        $this->db->query('SELECT count(*) as count, id FROM ok_users WHERE email=?', $email);
        $user_exists = $this->db->result();
 
        if($user_exists->count)
        {
            $_SESSION['user_id'] = $user_exists->id;
         $this->users->update_user($user_id, array('last_ip'=>$_SERVER['REMOTE_ADDR']));
            header('Location: '.$this->config->root_url.'/'.$this->lang_link.'user');
        }
        else
        {
            $user_id = $this->users->add_user(array(
                'name'=>$name,
                'email'=>$email,
                'password'=>$password,
                'phone'=>$phone,
            'group_id'=>1,
            'last_ip'=>$_SERVER['REMOTE_ADDR'])
            );
            $_SESSION['user_id'] = $user_id;
            header('Location: '.$this->config->root_url.'/'.$this->lang_link.'user');
        }
    }

Сама доработка работает. Регистрирует пользователя в CMS, вносит все необходимы данные, НО только если такого пользователя еще нет в системе. То есть первичная регистрация происходит хорошо, а уже авторизация для зарегистрированного email не работает. Ошибка где-то в проверке есть ли такой email уже в зарегистрированных пользователях.

Код: Выделить всё

// Проверяем есть ли в БД такой e-mail
        $this->db->query('SELECT count(*) as count, id FROM ok_users WHERE email=?', $email);
        $user_exists = $this->db->result();
 
        if($user_exists->count)
        {
            $_SESSION['user_id'] = $user_exists->id;
         $this->users->update_user($user_id, array('last_ip'=>$_SERVER['REMOTE_ADDR']));
            header('Location: '.$this->config->root_url.'/'.$this->lang_link.'user');
        }


Возможно кто-то подскажет как это исправить? Доработка достаточно необходимая для многих будет.

Добавлено спустя 17 часов 29 минут:
Вопрос закрыт. Решил отказаться от данной доработки в пользу платного модуля.

Вернуться в «Вопросы по работе с OkayCMS»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 27 гостей