diff --git a/app/Http/Controllers/AccountApiController.php b/app/Http/Controllers/AccountApiController.php index f09941489747..cc20a725c211 100644 --- a/app/Http/Controllers/AccountApiController.php +++ b/app/Http/Controllers/AccountApiController.php @@ -6,6 +6,7 @@ use App\Events\UserSignedUp; use App\Http\Requests\RegisterRequest; use App\Http\Requests\UpdateAccountRequest; use App\Models\Account; +use App\Ninja\OAuth\OAuth; use App\Ninja\Repositories\AccountRepository; use App\Ninja\Transformers\AccountTransformer; use App\Ninja\Transformers\UserAccountTransformer; @@ -188,25 +189,15 @@ class AccountApiController extends BaseAPIController $token = $request->input('token'); $provider = $request->input('provider'); - try { - $user = Socialite::driver($provider)->stateless()->userFromToken($token); - } catch (Exception $exception) { - return $this->errorResponse(['message' => $exception->getMessage()], 401); - } + $oAuth = new OAuth(); + $user = $oAuth->getProvider($provider)->getTokenResponse($token); - if ($user) { - $providerId = AuthService::getProviderId($provider); - $user = $this->accountRepo->findUserByOauth($providerId, $user->id); - } - - if ($user) { + if($user) { Auth::login($user); - return $this->processLogin($request); - } else { - sleep(ERROR_DELAY); - - return $this->errorResponse(['message' => 'Invalid credentials'], 401); } + else + return $this->errorResponse(['message' => 'Invalid credentials'], 401); + } } diff --git a/app/Ninja/OAuth/OAuth.php b/app/Ninja/OAuth/OAuth.php new file mode 100644 index 000000000000..487cd6172fd9 --- /dev/null +++ b/app/Ninja/OAuth/OAuth.php @@ -0,0 +1,44 @@ +providerInstance = new Providers\Google(); + return $this; + + default: + return null; + break; + } + } + + public function getTokenResponse($token) + { + $email = null; + $user = null; + + if($this->providerInstance) + $user = User::where('email', $this->providerInstance->getTokenResponse($token))->first(); + + if ($user) + return $user; + else + return false; + + } + + +} +?> \ No newline at end of file diff --git a/app/Ninja/OAuth/Providers/Google.php b/app/Ninja/OAuth/Providers/Google.php new file mode 100644 index 000000000000..0425b3f1d6aa --- /dev/null +++ b/app/Ninja/OAuth/Providers/Google.php @@ -0,0 +1,23 @@ + env('GOOGLE_CLIENT_ID','')]); + $payload = $client->verifyIdToken($token); + if ($payload) + return $this->harvestEmail($payload); + else + return null; + } + + public function harvestEmail($payload) + { + return $payload['email']; + } + + +} diff --git a/app/Ninja/OAuth/Providers/ProviderInterface.php b/app/Ninja/OAuth/Providers/ProviderInterface.php new file mode 100644 index 000000000000..689130f38c67 --- /dev/null +++ b/app/Ninja/OAuth/Providers/ProviderInterface.php @@ -0,0 +1,9 @@ +