Exemple #1
0
 public function getLogout()
 {
     HelperClassified::save_return_url();
     try {
         Auth::logout();
     } catch (Exception $e) {
         throw $e;
         return false;
     }
     return Redirect::to(HelperClassified::redirect_return_url());
 }
 public function getCallbackFB()
 {
     $data = get();
     if (!empty($data['code'])) {
         $app_id = UserAccessToken::$app_id;
         $app_secret = UserAccessToken::$app_secret;
         $redirect_uri = OCT_ROOT . '/api/v1/callback_fb';
         try {
             $url = self::$graph . "oauth/access_token?code={$data['code']}&client_id={$app_id}&client_secret={$app_secret}&redirect_uri={$redirect_uri}";
             $data = @file_get_contents($url);
             parse_str($data);
             if ($access_token) {
                 $access_token = trim($access_token);
                 // Grant access_token
                 $url = self::$graph . "oauth/access_token?client_id={$app_id}&client_secret={$app_secret}&grant_type=fb_exchange_token&fb_exchange_token={$access_token}";
                 $data = @file_get_contents($url);
                 parse_str($data);
                 if (Auth::check()) {
                     $user = Auth::getUser();
                     $user_id = $user->id;
                     $user->save();
                     $obj = UserAccessToken::check_fb_access_token($access_token);
                     if ($obj->user_id) {
                         $user->fb_uid = $obj->user_id;
                         $fb_uid = $obj->user_id;
                         $user->save();
                         self::saveUserAccessToken($user_id, $access_token, 'facebook');
                     }
                 } else {
                     // Get current facebook user email
                     $obj = UserAccessToken::check_fb_access_token($access_token);
                     if ($obj) {
                         $fb_uid = $obj->user_id;
                         $fb_user = UserAccessToken::get_fb_user_infor($fb_uid, $access_token);
                         if (!empty($fb_user->email)) {
                             DB::beginTransaction();
                             try {
                                 // Check user exists in DB
                                 $user = User::where('email', '=', $fb_user->email)->first();
                                 if (!$user) {
                                     $password = str_random(8);
                                     $user = new User();
                                     $user->password = $password;
                                     $user->password_confirmation = $password;
                                     $user->is_activated = true;
                                     $user->email = $fb_user->email;
                                     $user->name = $fb_user->name;
                                     $user->username = $fb_user->email;
                                 }
                                 $user->fb_uid = $fb_user->id;
                                 $user->save();
                                 UserAccessToken::sendEmailAfterRegister($user->name, $user->email);
                                 self::saveUserAccessToken($user->id, $access_token, 'facebook');
                                 Auth::login($user);
                             } catch (Exception $e) {
                                 DB::rollback();
                                 throw $e;
                             }
                             DB::commit();
                         }
                     }
                 }
                 // Save user avatar
                 if ($fb_uid) {
                     $image_url = "http://graph.facebook.com/v2.2/{$fb_uid}/picture?type=large";
                     UserAccessToken::getUserAvatar($user->id, $image_url);
                 }
                 return Redirect::to(HelperClassified::redirect_return_url());
             }
         } catch (Exception $ex) {
             throw $ex;
             return Response::json(array('status' => 'error', 'message' => $ex->getMessage()), 500);
         }
     }
     return Response::json(array('status' => 'success'), 200);
 }