<?php namespace Modules\OAuth\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Http\Response; use Illuminate\Routing\Controller; use \App\User; use Illuminate\Support\Facades\Auth; class OAuthController extends Controller { /** * Display a listing of the resource. * @return Response */ public function index(Request $request) { $settings = \Option::getOptions([ 'oauth.active', 'oauth.client_id', 'oauth.client_secret', 'oauth.token_url', 'oauth.user_url', ]); $ch = curl_init($settings['oauth.token_url']); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => 1, CURLOPT_POST => 1, CURLOPT_POSTFIELDS => http_build_query([ 'client_id' => $settings['oauth.client_id'], 'client_secret'=> $settings['oauth.client_secret'], 'grant_type' => 'authorization_code', 'code' => $request->get('code'), 'redirect_uri' => route('oauth_callback'), ]), CURLINFO_HEADER_OUT => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/x-www-form-urlencoded; charset=utf-8', ], ]); $data = json_decode(curl_exec($ch), true); $accessToken = $data['access_token']; curl_setopt_array($ch, [ CURLOPT_URL => $settings['oauth.user_url'], CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . $accessToken, ], ]); $data = json_decode(curl_exec($ch), true); $user = User::where('email','=', $data['email'])->first(); Auth::login($user); return redirect($request->session()->get('url.intended', '/')); } }