diff --git a/.travis.yml b/.travis.yml index 9f9a9fa4..611674b7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,14 +13,13 @@ php: matrix: include: - php: 7.3 - env: DEPENDENCIES=dev LINT=1 + env: LINT=1 - php: 7.1 env: COMPOSER_FLAGS='--prefer-lowest --prefer-stable' before_install: - phpenv config-rm xdebug.ini || true - composer self-update - - if [ "$DEPENDENCIES" = "dev" ]; then perl -pi -e 's/^}$/,"minimum-stability":"dev"}/' composer.json; fi; install: composer update --prefer-dist $COMPOSER_FLAGS diff --git a/README.md b/README.md index 01603a7b..f07cbff2 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,7 @@ via Composer: | [Azure](https://github.com/thenetworg/oauth2-azure) | composer require thenetworg/oauth2-azure | | [Bitbucket](https://github.com/stevenmaguire/oauth2-bitbucket) | composer require stevenmaguire/oauth2-bitbucket | | [Box](https://github.com/stevenmaguire/oauth2-box) | composer require stevenmaguire/oauth2-box | +| [Buddy](https://github.com/buddy-works/oauth2-client) | composer require buddy-works/oauth2-client | | [Buffer](https://github.com/tgallice/oauth2-buffer) | composer require tgallice/oauth2-buffer | | [CanvasLMS](https://github.com/smtech/oauth2-canvaslms) | composer require smtech/oauth2-canvaslms | | [Clever](https://github.com/schoolrunner/oauth2-clever) | composer require schoolrunner/oauth2-clever | @@ -582,6 +583,23 @@ knpu_oauth2_client: # whether to check OAuth2 "state": defaults to true # use_state: true + # will create service: "knpu.oauth2.client.buddy" + # an instance of: KnpU\OAuth2ClientBundle\Client\Provider\BuddyClient + # composer require buddy-works/oauth2-client + buddy: + # must be "buddy" - it activates that type! + type: buddy + # add and set these environment variables in your .env files + client_id: '%env(OAUTH_BUDDY_CLIENT_ID)%' + client_secret: '%env(OAUTH_BUDDY_CLIENT_SECRET)%' + # a route name you'll create + redirect_route: connect_buddy_check + redirect_params: {} + # Base API URL, modify this for self-hosted instances + # base_api_url: https://api.buddy.works + # whether to check OAuth2 "state": defaults to true + # use_state: true + # will create service: "knpu.oauth2.client.buffer" # an instance of: KnpU\OAuth2ClientBundle\Client\Provider\BufferClient # composer require tgallice/oauth2-buffer diff --git a/src/Client/Provider/BuddyClient.php b/src/Client/Provider/BuddyClient.php new file mode 100644 index 00000000..7a5d7ea7 --- /dev/null +++ b/src/Client/Provider/BuddyClient.php @@ -0,0 +1,35 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace KnpU\OAuth2ClientBundle\Client\Provider; + +use Buddy\OAuth2\Client\Provider\BuddyResourceOwner; +use KnpU\OAuth2ClientBundle\Client\OAuth2Client; +use League\OAuth2\Client\Provider\ResourceOwnerInterface; +use League\OAuth2\Client\Token\AccessToken; + +class BuddyClient extends OAuth2Client +{ + /** + * @return BuddyResourceOwner|ResourceOwnerInterface + */ + public function fetchUserFromToken(AccessToken $accessToken) + { + return parent::fetchUserFromToken($accessToken); + } + + /** + * @return BuddyResourceOwner|ResourceOwnerInterface + */ + public function fetchUser() + { + return parent::fetchUser(); + } +} diff --git a/src/Client/Provider/SpotifyClient.php b/src/Client/Provider/SpotifyClient.php index 237bbbf5..2f75baa0 100644 --- a/src/Client/Provider/SpotifyClient.php +++ b/src/Client/Provider/SpotifyClient.php @@ -10,6 +10,7 @@ namespace KnpU\OAuth2ClientBundle\Client\Provider; +use Kerox\OAuth2\Client\Provider\SpotifyResourceOwner; use KnpU\OAuth2ClientBundle\Client\OAuth2Client; use League\OAuth2\Client\Provider\ResourceOwnerInterface; use League\OAuth2\Client\Token\AccessToken; @@ -17,17 +18,17 @@ class SpotifyClient extends OAuth2Client { /** - * @return \Kerox\OAuth2\Client\Provider\SpotifyResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface + * @return SpotifyResourceOwner|ResourceOwnerInterface */ - public function fetchUserFromToken(AccessToken $accessToken): ResourceOwnerInterface + public function fetchUserFromToken(AccessToken $accessToken) { return parent::fetchUserFromToken($accessToken); } /** - * @return \Kerox\OAuth2\Client\Provider\SpotifyResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface + * @return SpotifyResourceOwner|ResourceOwnerInterface */ - public function fetchUser(): ResourceOwnerInterface + public function fetchUser() { return parent::fetchUser(); } diff --git a/src/DependencyInjection/KnpUOAuth2ClientExtension.php b/src/DependencyInjection/KnpUOAuth2ClientExtension.php index f2bf49b7..1eeca141 100644 --- a/src/DependencyInjection/KnpUOAuth2ClientExtension.php +++ b/src/DependencyInjection/KnpUOAuth2ClientExtension.php @@ -17,6 +17,7 @@ use KnpU\OAuth2ClientBundle\DependencyInjection\Providers\AzureProviderConfigurator; use KnpU\OAuth2ClientBundle\DependencyInjection\Providers\BitbucketProviderConfigurator; use KnpU\OAuth2ClientBundle\DependencyInjection\Providers\BoxProviderConfigurator; +use KnpU\OAuth2ClientBundle\DependencyInjection\Providers\BuddyProviderConfigurator; use KnpU\OAuth2ClientBundle\DependencyInjection\Providers\BufferProviderConfigurator; use KnpU\OAuth2ClientBundle\DependencyInjection\Providers\CanvasLMSProviderConfigurator; use KnpU\OAuth2ClientBundle\DependencyInjection\Providers\CleverProviderConfigurator; @@ -94,6 +95,7 @@ class KnpUOAuth2ClientExtension extends Extension 'azure' => AzureProviderConfigurator::class, 'bitbucket' => BitbucketProviderConfigurator::class, 'box' => BoxProviderConfigurator::class, + 'buddy' => BuddyProviderConfigurator::class, 'buffer' => BufferProviderConfigurator::class, 'canvas_lms' => CanvasLMSProviderConfigurator::class, 'clever' => CleverProviderConfigurator::class, diff --git a/src/DependencyInjection/Providers/BuddyProviderConfigurator.php b/src/DependencyInjection/Providers/BuddyProviderConfigurator.php new file mode 100644 index 00000000..86ffd41d --- /dev/null +++ b/src/DependencyInjection/Providers/BuddyProviderConfigurator.php @@ -0,0 +1,60 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace KnpU\OAuth2ClientBundle\DependencyInjection\Providers; + +use Symfony\Component\Config\Definition\Builder\NodeBuilder; + +class BuddyProviderConfigurator implements ProviderConfiguratorInterface +{ + public function buildConfiguration(NodeBuilder $node) + { + $node + ->scalarNode('base_api_url') + ->info('Base API URL, modify this for self-hosted instances') + ->defaultValue('https://api.buddy.works') + ->cannotBeEmpty() + ->end(); + } + + public function getProviderClass(array $config) + { + return 'Buddy\OAuth2\Client\Provider\Buddy'; + } + + public function getProviderOptions(array $config) + { + return [ + 'clientId' => $config['client_id'], + 'clientSecret' => $config['client_secret'], + 'baseApiUrl' => $config['base_api_url'], + ]; + } + + public function getPackagistName() + { + return 'buddy-works/oauth2-client'; + } + + public function getLibraryHomepage() + { + return 'https://github.com/buddy-works/oauth2-client'; + } + + public function getProviderDisplayName() + { + return 'Buddy'; + } + + public function getClientClass(array $config) + { + return 'KnpU\OAuth2ClientBundle\Client\Provider\BuddyClient'; + } +}