Source of file OAuthConfiguration.php
Size: 3,651 Bytes - Last Modified: 2019-08-09T18:27:54+00:00
/home/travis/build/zerospam/sdk-framework/src/Config/OAuthConfiguration.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 | <?php /** * Created by PhpStorm. * User: aaflalo * Date: 18-06-01 * Time: 09:43. */ namespace ZEROSPAM\Framework\SDK\Config; use League\OAuth2\Client\Grant\AuthorizationCode; use League\OAuth2\Client\Grant\RefreshToken; use League\OAuth2\Client\Provider\AbstractProvider; use League\OAuth2\Client\Token\AccessToken; use ZEROSPAM\Framework\SDK\Client\Middleware\IMiddleware; use ZEROSPAM\Framework\SDK\Client\Middleware\IPreRequestMiddleware; /** * Class OAuthConfiguration * * Helper for an OAuthConfiguration. * * You need to implement the providerClass by pointing it to your wanted OAuthProvider * * @see AbstractProvider * @package ZEROSPAM\Framework\SDK\Config */ abstract class OAuthConfiguration implements IOAuthConfiguration { /** * @var string */ private $clientId; /** * @var string */ private $clientSecret; /** * @var string */ private $redirectUrl; /** * @var string */ private $endPoint; /** * OAuthConfiguration constructor. * * @param string $clientId * @param string $clientSecret * @param string $redirectUrl * @param string $endPoint */ public function __construct(string $clientId, string $clientSecret, string $redirectUrl, string $endPoint) { $this->clientId = $clientId; $this->clientSecret = $clientSecret; $this->redirectUrl = $redirectUrl; $this->endPoint = $endPoint; } /** * Class to use for the provider. * * @return string */ abstract protected function providerClass(): string; /** * @return IMiddleware[] */ public function defaultMiddlewares(): array { return []; } /** * @return IPreRequestMiddleware[] */ public function defaultPreRequestMiddlewares(): array { return []; } /** * Get a OAuthProvider. * * @return AbstractProvider */ public function getProvider(): AbstractProvider { $class = $this->providerClass(); return new $class([ 'clientId' => $this->clientId, 'clientSecret' => $this->clientSecret, 'redirectUri' => $this->redirectUrl, ]); } /** * Get the redirect URL. * * @return string */ public function getRedirectUrl(): string { return $this->redirectUrl; } /** * End point for Requests. * * @return string */ public function getEndPoint(): string { return $this->endPoint; } /** * Get access token for given code. * * @param string $code * * @return AccessToken */ public function getAccessToken(string $code): AccessToken { return $this->getProvider()->getAccessToken( new AuthorizationCode(), [ 'code' => $code, ] ); } /** * Give a new access token refreshed. * * @param AccessToken $token * * @return AccessToken */ public function refreshAccessToken(AccessToken $token): AccessToken { return $this->refreshToken($token->getRefreshToken()); } /** * Use the refresh token to get a new access token. * * @param string $refreshToken * * @return AccessToken */ public function refreshToken(string $refreshToken): AccessToken { return $this->getProvider()->getAccessToken( new RefreshToken(), [ 'refresh_token' => $refreshToken, ] ); } } |