View file modules/ulogin/index.php

File size: 5.33Kb
<?php
acms_header('Авторизация через соц.сети', 'guests');

$s = file_get_contents('http://ulogin.ru/token.php?token='.$_POST['token'].'&host='.HTTP_HOST);
$user = json_decode($s, true);

if (isset($_POST['token']) && isset($user['network']) && isset($user['identity'])) {
  
  if (db::get_column("SELECT COUNT(*) FROM `USERS` WHERE `NETWORK` = ? AND `IDENTITY` = ? LIMIT 1", [$user['network'], $user['identity']]) == 0){
    
    /*
    ------------------------
    Если регистрация закрыта
    ------------------------
    */
    
    if (config('REG_MODE') == 0){
      
      error('Извините, регистрация закрыта');
      redirect('/');
    
    }
    
    /*
    -------------------------------
    Запрет на повторную регистрацию
    -------------------------------
    */
    
    if (config('REG_ANTIDOUBLE') == 1 && cookie('DOUBLE') == 1 || config('REG_ANTIDOUBLE') == 2 && cookie('DOUBLE') == 1 || config('REG_ANTIDOUBLE') == 2 && db::get_column("SELECT COUNT(`ID`) FROM `USERS` WHERE `IP` = ? LIMIT 1", [IP]) > 0){
      
      error('Извините, вы не можете зарегистрироваться, так как уже регистрировались');
      redirect('/');
    
    }
    
    $login = 'id'.mt_rand(00000000, 99999999);
    $pass = substr(base64_encode(mt_rand(000000, 999999)), 0, 12);
    
    if (db::get_column("SELECT COUNT(*) FROM `USERS` WHERE `LOGIN` = ? LIMIT 1", [$login]) == 0){
      
      $ID = db::get_add("INSERT INTO `USERS` (`NETWORK`, `IDENTITY`, `BROWSER`, `IP`, `DATE_CREATE`, `DATE_VISIT`, `LOGIN`, `PASSWORD`, `SEX`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", [$user['network'], $user['identity'], BROWSER, IP, TM, TM, $login, shif($pass), 1]);
      
      $user = db::get_string("SELECT * FROM `USERS` WHERE `ID` = ? AND `LOGIN` = ? AND `PASSWORD` = ? LIMIT 1", [$ID, $login, shif($pass)]);
      $hash = user_hash($user['ID']);
      
      db::get_set("UPDATE `USERS` SET `HASH` = ? WHERE `ID` = ? LIMIT 1", [$hash, $user['ID']]);
      
      setcookie('DOUBLE', 1, TM + 60 * 60 * 24 * 365, '/');
      setcookie('USER_ID', user_shif($user['ID']), TM + 60 * 60 * 24 * 365, '/');
      setcookie('PASSWORD', cencrypt($pass, $user['ID']), TM + 60 * 60 * 24 * 365, '/');
      session('salt', base64_encode(user_shif($user['ID']).','.cencrypt($pass, $user['ID'])));
      
      hooks::challenge('reg', 'reg');  
      hooks::run('reg');
      
      $avatar_rand_param = array('#6E8CCE', '#53C8A9', '#8FA1A9', '#FC8FD8', '#AFBC81', '#B381BC', '#EB6156', '#FD8B2C', '#72C375', '#B970C5', '#31ACB8', '#5498CE', '#997445', '#4EA771', '#828D92', '#F55448');
      $avatar_rand = array_rand($avatar_rand_param, 1);
      $avatar = $avatar_rand_param[$avatar_rand];
      
      db::get_add("INSERT INTO `NOTIFICATIONS_SETTINGS` (`USER_ID`) VALUES (?)", [$user['ID']]);
      db::get_add("INSERT INTO `MAIL_SETTINGS` (`USER_ID`) VALUES (?)", [$user['ID']]);
      db::get_add("INSERT INTO `USERS_SETTINGS` (`USER_ID`, `AVATAR_PHONE`) VALUES (?, ?)", [$user['ID'], $avatar]);
      
      $message = lg('Здравствуйте!').'
      '.lg('Это ваши данные для входа:').'
      '.lg('Логин:').' - [b]'.$login.'[/b]
      '.lg('Пароль:').' - [b]'.$pass.'[/b]
      
      [url=/m/ulogin/login/]'.lg('Вы можете сменить свой логин 1 раз бесплатно').'[/url].
      ';
      messages::get(config('SYSTEM'), $user['ID'], $message, 0);
      
    }
    
  }else{
    
    /*
    ------------------------
    Если авторизация закрыта
    ------------------------
    */
    
    if (config('AUT_ACCESS') == 0){
      
      error('Извините, авторизация закрыта');
      redirect('/');
    
    }
    
    if (config('CTJ') == 1) {
      
      error('На сайте ведутся тех.работы. Попробуйте авторизоваться позже');
      redirect('/');
    
    }
    
    $user = db::get_string("SELECT `ID` FROM `USERS` WHERE `NETWORK` = ? AND `IDENTITY` = ? LIMIT 1", [$user['network'], $user['identity']]);  
    $hash = user_hash($user['ID']);
    $pass = substr(base64_encode(mt_rand(000000, 999999)), 0, 12);
    db::get_set("UPDATE `USERS` SET `PASSWORD` = ?, `IP` = ?, `BROWSER` = ?, `HASH` = ? WHERE `ID` = ? LIMIT 1", [shif($pass), IP, BROWSER, $hash, $user['ID']]);
    
    if ($user['LOGIN_SET'] == 0) {
      
      $MS = '[url=/m/ulogin/login/]'.lg('Вы все еще можете сменить свой логин 1 раз бесплатно').'[/url]';
      
    }else{
      
      $MS = null;
      
    }
    
    $message = lg('Выполнен автовход через социальные сети. Для безопасности ваш пароль сменен').'.
      '.lg('Новый пароль:').' - [b]'.$pass.'[/b]
      
      '.$MS.'.
      ';
    messages::get(config('SYSTEM'), $user['ID'], $message, 0);
    
    session('HASH', $hash); 
    setcookie('DOUBLE', 1, TM + 60 * 60 * 24 * 365, '/');
    setcookie('USER_ID', user_shif($user['ID']), TM + 60 * 60 * 24 * 365, '/');
    setcookie('PASSWORD', cencrypt($pass, $user['ID']), TM + 60 * 60 * 24 * 365, '/');
    session('salt', base64_encode(user_shif($user['ID']).','.cencrypt($pass, $user['ID'])));
    
  }
  
}

redirect('/account/cabinet/');