예제 #1
0
 public function postUlogin()
 {
     $_user = json_decode(file_get_contents('http://ulogin.ru/token.php?token=' . Input::get('token') . '&host=' . $_SERVER['HTTP_HOST']), true);
     //$user['network'] - соц. сеть, через которую авторизовался пользователь
     //$user['identity'] - уникальная строка определяющая конкретного пользователя соц. сети
     //$user['first_name'] - имя пользователя
     //$user['last_name'] - фамилия пользователя
     $validate = Validator::make([], []);
     if (isset($_user['error'])) {
         $validate->errors()->add('error', trans('larulogin::larulogin.' . $_user['error']));
         return Response::make(View::make(Config::get('larulogin::views.error'), ['errors' => $validate->errors()]), 401);
     }
     // Check exist user
     $check = Ulogin::where('identity', '=', $_user['identity'])->first();
     if ($check) {
         Auth::loginUsingId($check->user_id, true);
         if (class_exists('Sentry')) {
             $authSentry = Sentry::findUserById($check->user_id);
             Sentry::login($authSentry, true);
         }
         return Redirect::to('/');
     }
     $rules = array('network' => 'required|max:255', 'identity' => 'required|max:255|unique:ulogin', 'email' => 'required|unique:ulogin|unique:users');
     $messages = array('email.unique' => trans('larulogin::larulogin.email_already_registered'));
     $validate = Validator::make($_user, $rules, $messages);
     if ($validate->passes()) {
         $password = str_random(8);
         $user = Sentry::createUser(array('first_name' => $_user['first_name'], 'last_name' => $_user['last_name'], 'email' => $_user['email'], 'password' => $password, 'activated' => TRUE));
         foreach (Config::get('larulogin::add_to_groups') as $group_name) {
             $user->addGroup(Sentry::findGroupByName($group_name));
         }
         $ulogin = new Ulogin();
         $ulogin->user_id = $user->id;
         $ulogin->network = $_user['network'];
         $ulogin->identity = $_user['identity'];
         $ulogin->email = $_user['email'];
         $ulogin->first_name = $_user['first_name'];
         $ulogin->last_name = $_user['last_name'];
         $ulogin->photo = $_user['photo'];
         $ulogin->photo_big = $_user['photo_big'];
         $ulogin->profile = $_user['profile'];
         $ulogin->access_token = isset($_user['access_token']) ? $_user['access_token'] : '';
         $ulogin->country = isset($_user['country']) ? $_user['country'] : '';
         $ulogin->city = isset($_user['city']) ? $_user['city'] : '';
         $ulogin->save();
         $authClassic = Auth::loginUsingId($user->id);
         if (class_exists('Sentry')) {
             $authSentry = Sentry::authenticate(array('email' => $_user['email'], 'password' => $password), true);
         }
         return Redirect::to('/');
     } else {
         return Response::make(View::make(Config::get('larulogin::views.error'), array('errors' => $validate->errors())), 401);
     }
 }
예제 #2
0
 private function createULogin($userID, $_user)
 {
     $ulogin = new Ulogin();
     $ulogin->user_id = $userID;
     $ulogin->network = @$_user['network'];
     $ulogin->identity = @$_user['identity'];
     $ulogin->email = isset($_user['email']) ? $_user['email'] : '';
     $ulogin->first_name = @$_user['first_name'];
     $ulogin->last_name = @$_user['last_name'];
     $ulogin->photo = @$_user['photo'];
     $ulogin->photo_big = @$_user['photo_big'];
     $ulogin->profile = @$_user['profile'];
     $ulogin->access_token = isset($_user['access_token']) ? $_user['access_token'] : '';
     $ulogin->country = isset($_user['country']) ? $_user['country'] : '';
     $ulogin->city = isset($_user['city']) ? $_user['city'] : '';
     $ulogin->save();
     return $ulogin;
 }
예제 #3
0
 public function participantsUpdate($user_id)
 {
     if ($user = Accounts::where('id', $user_id)->first()) {
         try {
             $post = Input::all();
             if (Input::has('remove_photo')) {
                 if (!empty($user->photo) && File::exists(public_path($user->photo))) {
                     File::delete(public_path($user->photo));
                 }
                 $user->photo = '';
                 if (!empty($user->thumbnail) && File::exists(public_path($user->thumbnail))) {
                     File::delete(public_path($user->thumbnail));
                 }
                 $user->thumbnail = '';
                 foreach (Ulogin::where('user_id', $user->id)->get() as $ulogin) {
                     $ulogin->photo_big = '';
                     $ulogin->photo = '';
                     $ulogin->save();
                 }
             } else {
                 $user->photo = AdminUploadsController::getUploadedFile('photo');
                 $user->thumbnail = '';
             }
             $names = explode(' ', $user->name);
             if (count($names) > 2) {
                 $user->name = @$names[0] . ' ' . @$names[1];
             } else {
                 $user->name = $post['name'];
             }
             $user->email = $post['email'];
             $user->surname = '';
             $user->location = $post['location'];
             $user->phone = $post['phone'];
             $user->age = $post['age'];
             $user->way = $post['way'];
             $user->yad_name = $post['yad_name'];
             $user->load_video = Input::has('load_video') ? 1 : 0;
             $user->local_video = $post['local_video'];
             $user->local_video_date = $post['local_video_date'];
             $user->video = $post['video'];
             $user->video_thumb = $post['video_thumb'];
             $user->skype = $post['skype'];
             $user->save();
             $user->touch();
             return Redirect::route('moderator.participants');
         } catch (Exception $e) {
         }
     }
     return Redirect::back();
 }
예제 #4
0
 public function index($setting)
 {
     if ($this->customer->isLogged()) {
         $this->response->redirect($this->url->link('account/account', '', 'SSL'));
     }
     $this->load->language('module/ulogin');
     $this->load->model('module/ulogin');
     require_once 'lib-ulogin/ulogin.php';
     $config = array('providers' => $this->config->get('ulogin_providers') == NULL ? array() : $this->config->get('ulogin_providers'), 'hidden' => $this->config->get('ulogin_hidden') == NULL ? array() : $this->config->get('ulogin_hidden'), 'type' => $this->config->get('ulogin_type'), 'redirect_uri' => $this->config->get('config_url') . 'ulogin.php', 'lang' => $this->language->get('code'));
     //var_dump($config);die;
     $data['ulogin'] = Ulogin::factory($config);
     $data['text_register_login'] = $this->language->get('text_register_login');
     if (isset($this->session->data['ulogin_token'])) {
         $token = $this->session->data['ulogin_token'];
         $this->login($token);
         unset($this->session->data['ulogin_token']);
     }
     if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/ulogin.tpl')) {
         return $this->load->view($this->config->get('config_template') . '/template/module/ulogin.tpl', $data);
     } else {
         return $this->load->view('default/template/module/ulogin.tpl', $data);
     }
 }
예제 #5
0
 public function createULogin($user_id, $post)
 {
     $ulogin = new Ulogin();
     if (!is_null($post) && isset($post['network']) && !empty($post['network'])) {
         $ulogin->user_id = $user_id;
         $ulogin->network = $post['network'];
         $ulogin->identity = $post['identity'];
         $ulogin->email = $post['email'];
         $ulogin->first_name = $post['name'];
         $ulogin->last_name = $post['surname'];
         $ulogin->nickname = '';
         $ulogin->city = '';
         $ulogin->photo = $post['photo'];
         $ulogin->photo_big = $post['photo_big'];
         $ulogin->profile = $post['profile'];
         $ulogin->uid = $post['uid'];
         $ulogin->access_token = $post['token'];
         $ulogin->verified_email = $post['verified_email'];
         $ulogin->token_secret = '';
         $ulogin->bdate = $post['yyyy'] . '-' . $post['mm'] . '-' . $post['dd'];
         $ulogin->sex = $post['sex'];
         $ulogin->save();
         $ulogin->touch();
         return $ulogin;
     }
     return FALSE;
 }
예제 #6
0
 public function postUlogin()
 {
     $url_request = 'http://ulogin.ru/token.php?token=' . Input::get('token') . '&host=' . $_SERVER['HTTP_HOST'];
     $result = (new ApiController())->getCurl($url_request, FALSE);
     $_user = json_decode($result['curl_result'], true);
     $validate = Validator::make([], []);
     if (isset($_user['error'])) {
         return Redirect::to(URL::route('page', 'registering'));
     }
     $post['provider'] = $_user['network'];
     $post['identity'] = $_user['uid'];
     $api_social = (new ApiController())->social_logon($post);
     try {
         if (is_array($api_social)) {
             if (Ulogin::where('identity', '=', $_user['identity'])->exists() === FALSE) {
                 $post = array();
                 $post['customerId'] = @$api_social['id'];
                 $post['sessionKey'] = @$api_social['sessionKey'];
                 $api = (new ApiController())->get_register($post);
                 if (isset($api['email'])) {
                     $password = Str::random(8);
                     $post['remote_id'] = $post['customerId'];
                     $post['email'] = $api['email'];
                     $post['name'] = @$api['name'];
                     $post['surname'] = @$api['surname'];
                     $post['sex'] = @$api['sex'] == 'female' ? 0 : 1;
                     $post['dd'] = @$api['dd'];
                     $post['mm'] = @$api['mm'];
                     $post['yyyy'] = @$api['yyyy'];
                     $post['phone'] = @$api['phone'];
                     $post['city'] = @$api['city'];
                     $post['password'] = Hash::make($password);
                     $post['code'] = Input::get('promo-code');
                     $user = (new RegisterController())->getRegisterAccount($post);
                     (new RegisterController())->createULogin($user->id, $post);
                 }
             }
         } else {
             /*
             if (Config::has('api.message')):
                                 Session::flash('message', Config::get('api.message'));
                             else:
                                 Session::flash('message', 'Возникла ошибка при авторизации через социальную сеть.');
                             endif;
                             return Redirect::to(pageurl('auth') . '#message');
             */
         }
     } catch (Exception $e) {
         Session::flash('message', 'Возникла ошибка при авторизации через социальную сеть.');
         return Redirect::to(pageurl('auth') . '#message');
     }
     if ($check = Ulogin::where('identity', '=', $_user['identity'])->first()) {
         Auth::loginUsingId($check->user_id, FALSE);
         if (is_array($api_social)) {
             Auth::user()->active = 1;
             Auth::user()->remote_id = @$api_social['id'];
             Auth::user()->sessionKey = @$api_social['sessionKey'];
             Auth::user()->save();
         }
         if (isset($_COOKIE['firstCodeCookie']) && !empty($_COOKIE['firstCodeCookie'])) {
             $result = PromoController::registerPromoCode($_COOKIE['firstCodeCookie']);
             Session::flash('message', Config::get('api.message'));
             setcookie("firstCodeCookie", "", time() - 3600, '/');
             return Redirect::to(AuthAccount::getGroupStartUrl() . '#message');
         }
         return Redirect::to(AuthAccount::getGroupStartUrl());
     } elseif (isset($_user['email']) && User::where('email', @$_user['email'])->exists()) {
         return Redirect::to(URL::route('page', 'registering'))->with('token', Input::get('token'))->with('email', @$_user['email'])->with('identity', @$_user['identity'])->with('profile', @$_user['profile'])->with('first_name', @$_user['first_name'])->with('last_name', @$_user['last_name'])->with('sex', @$_user['sex'] - 1)->with('bdate', @$_user['bdate'])->with('uid', @$_user['uid'])->with('photo_big', @$_user['photo_big'])->with('photo', @$_user['photo'])->with('network', @$_user['network'])->with('verified_email', @$_user['verified_email']);
     } else {
         $rules = array('network' => 'required|max:255', 'identity' => 'required|max:255|unique:ulogin', 'email' => 'required|unique:ulogin|unique:users');
         $validate = Validator::make($_user, $rules);
         if ($validate->passes()) {
             return Redirect::to(URL::route('page', 'registering'))->with('token', Input::get('token'))->with('email', @$_user['email'])->with('identity', @$_user['identity'])->with('profile', @$_user['profile'])->with('first_name', @$_user['first_name'])->with('last_name', @$_user['last_name'])->with('sex', @$_user['sex'] - 1)->with('bdate', @$_user['bdate'])->with('uid', @$_user['uid'])->with('photo_big', @$_user['photo_big'])->with('photo', @$_user['photo'])->with('network', @$_user['network'])->with('verified_email', @$_user['verified_email']);
         } else {
             return Redirect::to(URL::route('page', 'registering'));
         }
     }
 }
예제 #7
0
파일: Uauth.php 프로젝트: yarvasa/timequest
 /** Завершает сессию и очищает сохраненные переменные
 */
 public function logout()
 {
     parent::logout();
     unset($_SESSION[self::session_key]);
 }
예제 #8
0
                $networks = implode(',', $networks) . ',' . $ID_INFO[0];
                $second_user = CUser::GetByID($ID_INFO[1])->GetNext();
                $second_networks = explode(',', $second_user['ADMIN_NOTES']);
                unset($second_networks[array_search($ID_INFO[0], $second_networks)]);
                if (!count($second_networks)) {
                    $USER->Delete($ID_INFO[1]);
                } else {
                    $USER->Update($ID_INFO[1], array('ADMIN_NOTES' => implode(',', $second_networks)));
                }
                Ulogin::updateUloginAccount($UloginID, $UserID, $arResult['USER']['NETWORK']);
                $USER->Update($UserID, array('ADMIN_NOTES' => $networks));
            }
        } else {
            if (!in_array($arResult['USER']['NETWORK'], $networks)) {
                //добавляем, если такого сервиса нет
                Ulogin::createUloginAccount($arResult['USER'], $UserID);
                $networks = implode(',', $networks) . ',' . $arResult['USER']['NETWORK'];
                $USER->Update($UserID, array('ADMIN_NOTES' => $networks));
            }
        }
    } else {
        if (isset($profile['error'])) {
            ShowMessage(array("TYPE" => "ERROR", "MESSAGE" => $profile['error']));
        }
    }
}
if (!isset($GLOBALS['ULOGIN_OK'])) {
    $GLOBALS['ULOGIN_OK'] = 1;
} else {
    $GLOBALS['ULOGIN_OK']++;
}