<?php namespace xYundy\L5WebCreatorOAuth; use Illuminate\Support\Arr; use SocialiteProviders\Manager\OAuth2\AbstractProvider; use SocialiteProviders\Manager\OAuth2\User; class Provider extends AbstractProvider { /** * Unique Provider Identifier. */ const IDENTIFIER = 'L5WEBCREATOR'; /** * The scopes being requested. * * @var array */ protected $scopes = []; /** * {@inheritdoc} */ protected function getAuthUrl($state) { return $this->buildAuthUrlFromBase(env('OAUTH_AUTH_URL'), $state); } /** * {@inheritdoc} */ protected function getTokenUrl() { return env("OAUTH_TOKEN_URL"); } /** * {@inheritdoc} */ protected function getUserByToken($token) { $response = $this->getHttpClient()->get( env('OAUTH_USER_TOKEN_URL'), [ 'headers' => [ 'Authorization' => 'Bearer '.$token, ], ]); return json_decode($response->getBody()->getContents(), true); } /** * {@inheritdoc} */ protected function mapUserToObject(array $user) { return (new User())->setRaw($user)->map( [ 'id' => $user['id'], 'email' => $user['email'], ] ); } /** * {@inheritdoc} */ protected function getTokenFields($code) { return array_merge(parent::getTokenFields($code), [ 'grant_type' => 'authorization_code', ]); } }