Код в 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 минут:
Вопрос закрыт. Решил отказаться от данной доработки в пользу платного модуля.