diff --git a/phpstan.neon.dist b/phpstan.neon.dist index dab548d0..7fc285c0 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -1,5 +1,5 @@ parameters: - level: 1 + level: max inferPrivatePropertyTypeFromConstructor: true paths: - ./src/ @@ -17,3 +17,15 @@ parameters: - message: '#Class [a-zA-Z0-9\\_]+ not found#' path: ./src/DependencyInjection/Providers + + # The DependencyInjection returns are very complex to deal with + - + message: '#.*NodeParentInterface|null.*#' + path: ./src/DependencyInjection/Providers + - + message: '#.*NodeDefinition::children.*#' + path: ./src/DependencyInjection + # Searches for root(), for backward compatibility with Symfony <4.2. Removed in 5.0 + - + message: '#Call to an undefined method Symfony\\Component\\Config\\Definition\\Builder\\TreeBuilder::root\(\)\.#' + path: ./src/DependencyInjection diff --git a/src/Client/ClientRegistry.php b/src/Client/ClientRegistry.php index da04b47d..ca99b149 100644 --- a/src/Client/ClientRegistry.php +++ b/src/Client/ClientRegistry.php @@ -41,15 +41,23 @@ public function __construct(ContainerInterface $container, array $serviceMap) */ public function getClient($key) { - if (!isset($this->serviceMap[$key])) { - throw new \InvalidArgumentException(sprintf( - 'There is no OAuth2 client called "%s". Available are: %s', - $key, - implode(', ', array_keys($this->serviceMap)) - )); + if (isset($this->serviceMap[$key])) { + $client = $this->container->get($this->serviceMap[$key]); + if (!$client instanceof OAuth2Client) { + throw new \InvalidArgumentException(sprintf( + 'Somehow the "%s" client is not an instance of OAuth2Client.', + $key + )); + } + + return $client; } - return $this->container->get($this->serviceMap[$key]); + throw new \InvalidArgumentException(sprintf( + 'There is no OAuth2 client called "%s". Available are: %s', + $key, + implode(', ', array_keys($this->serviceMap)) + )); } /** diff --git a/src/Client/OAuth2Client.php b/src/Client/OAuth2Client.php index 628941b8..edb640fb 100644 --- a/src/Client/OAuth2Client.php +++ b/src/Client/OAuth2Client.php @@ -17,6 +17,7 @@ use League\OAuth2\Client\Token\AccessToken; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\RequestStack; +use Symfony\Component\HttpFoundation\Session\SessionInterface; class OAuth2Client implements OAuth2ClientInterface { @@ -82,7 +83,7 @@ public function redirect(array $scopes = [], array $options = []) /** * Call this after the user is redirected back to get the access token. * - * @return \League\OAuth2\Client\Token\AccessToken + * @return AccessToken|\League\OAuth2\Client\Token\AccessTokenInterface * * @throws InvalidStateException * @throws MissingAuthorizationCodeException @@ -131,6 +132,7 @@ public function fetchUserFromToken(AccessToken $accessToken) */ public function fetchUser() { + /** @var AccessToken $token */ $token = $this->getAccessToken(); return $this->fetchUserFromToken($token); @@ -161,16 +163,14 @@ private function getCurrentRequest() } /** - * @return \Symfony\Component\HttpFoundation\Session\SessionInterface|null + * @return SessionInterface */ private function getSession() { - $session = $this->getCurrentRequest()->getSession(); - - if (!$session) { + if (!$this->getCurrentRequest()->hasSession()) { throw new \LogicException('In order to use "state", you must have a session. Set the OAuth2Client to stateless to avoid state'); } - return $session; + return $this->getCurrentRequest()->getSession(); } } diff --git a/src/Client/Provider/AmazonClient.php b/src/Client/Provider/AmazonClient.php index ea06cdc7..eaa5eae2 100644 --- a/src/Client/Provider/AmazonClient.php +++ b/src/Client/Provider/AmazonClient.php @@ -19,7 +19,7 @@ class AmazonClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return AmazonResourceOwner + * @return AmazonResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return AmazonResourceOwner + * @return AmazonResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/Auth0Client.php b/src/Client/Provider/Auth0Client.php index 33f42ffe..136e44f2 100644 --- a/src/Client/Provider/Auth0Client.php +++ b/src/Client/Provider/Auth0Client.php @@ -19,7 +19,7 @@ class Auth0Client extends OAuth2Client /** * @param AccessToken $accessToken * - * @return Auth0ResourceOwner + * @return Auth0ResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return Auth0ResourceOwner + * @return Auth0ResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/AzureClient.php b/src/Client/Provider/AzureClient.php index 42e67b0f..1c4938a9 100644 --- a/src/Client/Provider/AzureClient.php +++ b/src/Client/Provider/AzureClient.php @@ -19,7 +19,7 @@ class AzureClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return AzureResourceOwner + * @return AzureResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return AzureResourceOwner + * @return AzureResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/BitbucketClient.php b/src/Client/Provider/BitbucketClient.php index 6ce08492..bbdb3102 100644 --- a/src/Client/Provider/BitbucketClient.php +++ b/src/Client/Provider/BitbucketClient.php @@ -19,7 +19,7 @@ class BitbucketClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return BitbucketResourceOwner + * @return BitbucketResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return BitbucketResourceOwner + * @return BitbucketResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/BoxClient.php b/src/Client/Provider/BoxClient.php index 59927324..701064b1 100644 --- a/src/Client/Provider/BoxClient.php +++ b/src/Client/Provider/BoxClient.php @@ -19,7 +19,7 @@ class BoxClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return BoxResourceOwner + * @return BoxResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return BoxResourceOwner + * @return BoxResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/BufferClient.php b/src/Client/Provider/BufferClient.php index a1341017..5e1b8d06 100644 --- a/src/Client/Provider/BufferClient.php +++ b/src/Client/Provider/BufferClient.php @@ -19,7 +19,7 @@ class BufferClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return BufferUser + * @return BufferUser|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return BufferUser + * @return BufferUser|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/CanvasLMSClient.php b/src/Client/Provider/CanvasLMSClient.php index 00d84653..0a3c0df7 100644 --- a/src/Client/Provider/CanvasLMSClient.php +++ b/src/Client/Provider/CanvasLMSClient.php @@ -19,7 +19,7 @@ class CanvasLMSClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return CanvasLMSResourceOwner + * @return CanvasLMSResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return CanvasLMSResourceOwner + * @return CanvasLMSResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/CleverClient.php b/src/Client/Provider/CleverClient.php index 1ec36fae..31b31016 100644 --- a/src/Client/Provider/CleverClient.php +++ b/src/Client/Provider/CleverClient.php @@ -19,7 +19,7 @@ class CleverClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return CleverUser + * @return CleverUser|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return CleverUser + * @return CleverUser|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/DevianArtClient.php b/src/Client/Provider/DevianArtClient.php index a1b6d325..27d791c2 100644 --- a/src/Client/Provider/DevianArtClient.php +++ b/src/Client/Provider/DevianArtClient.php @@ -19,7 +19,7 @@ class DevianArtClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return DeviantArtResourceOwner + * @return DeviantArtResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return DeviantArtResourceOwner + * @return DeviantArtResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/DigitalOceanClient.php b/src/Client/Provider/DigitalOceanClient.php index c3f52c6d..239e78e0 100644 --- a/src/Client/Provider/DigitalOceanClient.php +++ b/src/Client/Provider/DigitalOceanClient.php @@ -19,7 +19,7 @@ class DigitalOceanClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return DigitalOceanResourceOwner + * @return DigitalOceanResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return DigitalOceanResourceOwner + * @return DigitalOceanResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/DiscordClient.php b/src/Client/Provider/DiscordClient.php index 82ec3ecb..8a3db936 100644 --- a/src/Client/Provider/DiscordClient.php +++ b/src/Client/Provider/DiscordClient.php @@ -19,7 +19,7 @@ class DiscordClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return DiscordResourceOwner + * @return DiscordResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return DiscordResourceOwner + * @return DiscordResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/DribbbleClient.php b/src/Client/Provider/DribbbleClient.php index 2702c694..925ecfb5 100644 --- a/src/Client/Provider/DribbbleClient.php +++ b/src/Client/Provider/DribbbleClient.php @@ -19,7 +19,7 @@ class DribbbleClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return DribbbleResourceOwner + * @return DribbbleResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return DribbbleResourceOwner + * @return DribbbleResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/DropboxClient.php b/src/Client/Provider/DropboxClient.php index c3e1a589..6f56e956 100644 --- a/src/Client/Provider/DropboxClient.php +++ b/src/Client/Provider/DropboxClient.php @@ -19,7 +19,7 @@ class DropboxClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return DropboxResourceOwner + * @return DropboxResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return DropboxResourceOwner + * @return DropboxResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/DrupalClient.php b/src/Client/Provider/DrupalClient.php index da5ce0c2..664491b5 100644 --- a/src/Client/Provider/DrupalClient.php +++ b/src/Client/Provider/DrupalClient.php @@ -19,7 +19,7 @@ class DrupalClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return DrupalResourceOwner + * @return DrupalResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return DrupalResourceOwner + * @return DrupalResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/ElanceClient.php b/src/Client/Provider/ElanceClient.php index dccc8fdc..be8f8f46 100644 --- a/src/Client/Provider/ElanceClient.php +++ b/src/Client/Provider/ElanceClient.php @@ -19,7 +19,7 @@ class ElanceClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return ElanceResourceOwner + * @return ElanceResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return ElanceResourceOwner + * @return ElanceResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/EveOnlineClient.php b/src/Client/Provider/EveOnlineClient.php index d234e3fd..bf02c68f 100644 --- a/src/Client/Provider/EveOnlineClient.php +++ b/src/Client/Provider/EveOnlineClient.php @@ -19,7 +19,7 @@ class EveOnlineClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return EveOnlineResourceOwner + * @return EveOnlineResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return EveOnlineResourceOwner + * @return EveOnlineResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/EventbriteClient.php b/src/Client/Provider/EventbriteClient.php index f1464f19..d0228e39 100644 --- a/src/Client/Provider/EventbriteClient.php +++ b/src/Client/Provider/EventbriteClient.php @@ -19,7 +19,7 @@ class EventbriteClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return EventbriteResourceOwner + * @return EventbriteResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return EventbriteResourceOwner + * @return EventbriteResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/FacebookClient.php b/src/Client/Provider/FacebookClient.php index 9b6a4c64..feb25335 100644 --- a/src/Client/Provider/FacebookClient.php +++ b/src/Client/Provider/FacebookClient.php @@ -19,7 +19,7 @@ class FacebookClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return FacebookUser + * @return FacebookUser|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return FacebookUser + * @return FacebookUser|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/FitbitClient.php b/src/Client/Provider/FitbitClient.php index fdfdacbf..bb098b4a 100644 --- a/src/Client/Provider/FitbitClient.php +++ b/src/Client/Provider/FitbitClient.php @@ -19,7 +19,7 @@ class FitbitClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return FitbitUser + * @return FitbitUser|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return FitbitUser + * @return FitbitUser|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/FoursquareClient.php b/src/Client/Provider/FoursquareClient.php index c9fae930..72cef681 100644 --- a/src/Client/Provider/FoursquareClient.php +++ b/src/Client/Provider/FoursquareClient.php @@ -19,7 +19,7 @@ class FoursquareClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return FoursquareResourceOwner + * @return FoursquareResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return FoursquareResourceOwner + * @return FoursquareResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/GeocachingClient.php b/src/Client/Provider/GeocachingClient.php index f36d1bf0..e08ae96d 100644 --- a/src/Client/Provider/GeocachingClient.php +++ b/src/Client/Provider/GeocachingClient.php @@ -19,7 +19,7 @@ class GeocachingClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return GeocachingResourceOwner + * @return GeocachingResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return GeocachingResourceOwner + * @return GeocachingResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/GithubClient.php b/src/Client/Provider/GithubClient.php index 26abe273..d732075c 100644 --- a/src/Client/Provider/GithubClient.php +++ b/src/Client/Provider/GithubClient.php @@ -19,7 +19,7 @@ class GithubClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return GithubResourceOwner + * @return GithubResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return GithubResourceOwner + * @return GithubResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/GitlabClient.php b/src/Client/Provider/GitlabClient.php index c5b43c9e..b8ffef0d 100644 --- a/src/Client/Provider/GitlabClient.php +++ b/src/Client/Provider/GitlabClient.php @@ -24,7 +24,7 @@ class GitlabClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return GitlabResourceOwner + * @return GitlabResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -32,7 +32,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return GitlabResourceOwner + * @return GitlabResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/GoogleClient.php b/src/Client/Provider/GoogleClient.php index 65035e37..37657f45 100644 --- a/src/Client/Provider/GoogleClient.php +++ b/src/Client/Provider/GoogleClient.php @@ -19,7 +19,7 @@ class GoogleClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return GoogleUser + * @return GoogleUser|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return GoogleUser + * @return GoogleUser|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/HeadHunterClient.php b/src/Client/Provider/HeadHunterClient.php index ec0adc55..9ab2006d 100644 --- a/src/Client/Provider/HeadHunterClient.php +++ b/src/Client/Provider/HeadHunterClient.php @@ -19,7 +19,7 @@ class HeadHunterClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return HeadHunterResourceOwner + * @return HeadHunterResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return HeadHunterResourceOwner + * @return HeadHunterResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/HerokuClient.php b/src/Client/Provider/HerokuClient.php index faeaa194..b8c058c7 100644 --- a/src/Client/Provider/HerokuClient.php +++ b/src/Client/Provider/HerokuClient.php @@ -19,7 +19,7 @@ class HerokuClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return HerokuResourceOwner + * @return HerokuResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return HerokuResourceOwner + * @return HerokuResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/InstagramClient.php b/src/Client/Provider/InstagramClient.php index 5d365463..dd963679 100644 --- a/src/Client/Provider/InstagramClient.php +++ b/src/Client/Provider/InstagramClient.php @@ -19,7 +19,7 @@ class InstagramClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return InstagramResourceOwner + * @return InstagramResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return InstagramResourceOwner + * @return InstagramResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/JiraClient.php b/src/Client/Provider/JiraClient.php index 2a43d531..4683827b 100644 --- a/src/Client/Provider/JiraClient.php +++ b/src/Client/Provider/JiraClient.php @@ -19,7 +19,7 @@ class JiraClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return JiraResourceOwner + * @return JiraResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return JiraResourceOwner + * @return JiraResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/KeycloakClient.php b/src/Client/Provider/KeycloakClient.php index c2a556a2..270e8245 100644 --- a/src/Client/Provider/KeycloakClient.php +++ b/src/Client/Provider/KeycloakClient.php @@ -19,7 +19,7 @@ class KeycloakClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return KeycloakResourceOwner + * @return KeycloakResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return KeycloakResourceOwner + * @return KeycloakResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/LinkedInClient.php b/src/Client/Provider/LinkedInClient.php index 0587e604..f240d21a 100644 --- a/src/Client/Provider/LinkedInClient.php +++ b/src/Client/Provider/LinkedInClient.php @@ -19,7 +19,7 @@ class LinkedInClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return LinkedInResourceOwner + * @return LinkedInResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return LinkedInResourceOwner + * @return LinkedInResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/MailRuClient.php b/src/Client/Provider/MailRuClient.php index 5ea7cc25..be08be85 100644 --- a/src/Client/Provider/MailRuClient.php +++ b/src/Client/Provider/MailRuClient.php @@ -19,7 +19,7 @@ class MailRuClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return MailruResourceOwner + * @return MailruResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return MailruResourceOwner + * @return MailruResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/MicrosoftClient.php b/src/Client/Provider/MicrosoftClient.php index 0dfaa637..03c2afb2 100644 --- a/src/Client/Provider/MicrosoftClient.php +++ b/src/Client/Provider/MicrosoftClient.php @@ -19,7 +19,7 @@ class MicrosoftClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return MicrosoftResourceOwner + * @return MicrosoftResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return MicrosoftResourceOwner + * @return MicrosoftResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/MollieClient.php b/src/Client/Provider/MollieClient.php index e739d83f..1a132645 100644 --- a/src/Client/Provider/MollieClient.php +++ b/src/Client/Provider/MollieClient.php @@ -19,7 +19,7 @@ class MollieClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return MollieResourceOwner + * @return MollieResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return MollieResourceOwner + * @return MollieResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/OdnoklassnikiClient.php b/src/Client/Provider/OdnoklassnikiClient.php index 0c208ac4..827d0e22 100644 --- a/src/Client/Provider/OdnoklassnikiClient.php +++ b/src/Client/Provider/OdnoklassnikiClient.php @@ -19,7 +19,7 @@ class OdnoklassnikiClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return OdnoklassnikiResourceOwner + * @return OdnoklassnikiResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return OdnoklassnikiResourceOwner + * @return OdnoklassnikiResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/PaypalClient.php b/src/Client/Provider/PaypalClient.php index 853958a0..a4a95426 100644 --- a/src/Client/Provider/PaypalClient.php +++ b/src/Client/Provider/PaypalClient.php @@ -19,7 +19,7 @@ class PaypalClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return PaypalResourceOwner + * @return PaypalResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return PaypalResourceOwner + * @return PaypalResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/PsnClient.php b/src/Client/Provider/PsnClient.php index 2d046043..421ac4de 100644 --- a/src/Client/Provider/PsnClient.php +++ b/src/Client/Provider/PsnClient.php @@ -19,7 +19,7 @@ class PsnClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return PsnResourceOwner + * @return PsnResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return PsnResourceOwner + * @return PsnResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/SalesforceClient.php b/src/Client/Provider/SalesforceClient.php index efa90002..7feb27bf 100644 --- a/src/Client/Provider/SalesforceClient.php +++ b/src/Client/Provider/SalesforceClient.php @@ -19,7 +19,7 @@ class SalesforceClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return SalesforceResourceOwner + * @return SalesforceResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return SalesforceResourceOwner + * @return SalesforceResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/SlackClient.php b/src/Client/Provider/SlackClient.php index 627eb679..96263b3d 100644 --- a/src/Client/Provider/SlackClient.php +++ b/src/Client/Provider/SlackClient.php @@ -19,7 +19,7 @@ class SlackClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return SlackResourceOwner + * @return SlackResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return SlackResourceOwner + * @return SlackResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/StravaClient.php b/src/Client/Provider/StravaClient.php index 29ecd4b2..e0339c85 100644 --- a/src/Client/Provider/StravaClient.php +++ b/src/Client/Provider/StravaClient.php @@ -19,7 +19,7 @@ class StravaClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return StravaResourceOwner + * @return StravaResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return StravaResourceOwner + * @return StravaResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/StripeClient.php b/src/Client/Provider/StripeClient.php index d8824dd8..4d85e3aa 100644 --- a/src/Client/Provider/StripeClient.php +++ b/src/Client/Provider/StripeClient.php @@ -19,7 +19,7 @@ class StripeClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return StripeResourceOwner + * @return StripeResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return StripeResourceOwner + * @return StripeResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/UberClient.php b/src/Client/Provider/UberClient.php index 3f4a794b..561833b3 100644 --- a/src/Client/Provider/UberClient.php +++ b/src/Client/Provider/UberClient.php @@ -19,7 +19,7 @@ class UberClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return UberResourceOwner + * @return UberResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return UberResourceOwner + * @return UberResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/UnsplashClient.php b/src/Client/Provider/UnsplashClient.php index a5687d1a..de17ec0c 100644 --- a/src/Client/Provider/UnsplashClient.php +++ b/src/Client/Provider/UnsplashClient.php @@ -19,7 +19,7 @@ class UnsplashClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return UnsplashResourceOwner + * @return UnsplashResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return UnsplashResourceOwner + * @return UnsplashResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/VKontakteClient.php b/src/Client/Provider/VKontakteClient.php index 57d18057..6517d3b4 100644 --- a/src/Client/Provider/VKontakteClient.php +++ b/src/Client/Provider/VKontakteClient.php @@ -19,7 +19,7 @@ class VKontakteClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return User + * @return User|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return User + * @return User|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/VimeoClient.php b/src/Client/Provider/VimeoClient.php index 25412d2b..08921a0c 100644 --- a/src/Client/Provider/VimeoClient.php +++ b/src/Client/Provider/VimeoClient.php @@ -19,7 +19,7 @@ class VimeoClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return VimeoResourceOwner + * @return VimeoResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return VimeoResourceOwner + * @return VimeoResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/YahooClient.php b/src/Client/Provider/YahooClient.php index 4a4388d8..4a4d1a23 100644 --- a/src/Client/Provider/YahooClient.php +++ b/src/Client/Provider/YahooClient.php @@ -19,7 +19,7 @@ class YahooClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return YahooUser + * @return YahooUser|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return YahooUser + * @return YahooUser|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/YandexClient.php b/src/Client/Provider/YandexClient.php index 40e7acb0..914735b6 100644 --- a/src/Client/Provider/YandexClient.php +++ b/src/Client/Provider/YandexClient.php @@ -19,7 +19,7 @@ class YandexClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return YandexResourceOwner + * @return YandexResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return YandexResourceOwner + * @return YandexResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/Client/Provider/ZendeskClient.php b/src/Client/Provider/ZendeskClient.php index 7d1ccd4c..2c42d4a8 100644 --- a/src/Client/Provider/ZendeskClient.php +++ b/src/Client/Provider/ZendeskClient.php @@ -19,7 +19,7 @@ class ZendeskClient extends OAuth2Client /** * @param AccessToken $accessToken * - * @return ZendeskResourceOwner + * @return ZendeskResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUserFromToken(AccessToken $accessToken) { @@ -27,7 +27,7 @@ public function fetchUserFromToken(AccessToken $accessToken) } /** - * @return ZendeskResourceOwner + * @return ZendeskResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface */ public function fetchUser() { diff --git a/src/DependencyInjection/Providers/GenericProviderConfigurator.php b/src/DependencyInjection/Providers/GenericProviderConfigurator.php index 6a77fb21..458a65c8 100644 --- a/src/DependencyInjection/Providers/GenericProviderConfigurator.php +++ b/src/DependencyInjection/Providers/GenericProviderConfigurator.php @@ -47,12 +47,12 @@ public function getProviderOptions(array $config) public function getPackagistName() { - return false; + return ''; } public function getLibraryHomepage() { - return false; + return ''; } public function getProviderDisplayName() diff --git a/src/Security/Helper/FinishRegistrationBehavior.php b/src/Security/Helper/FinishRegistrationBehavior.php index e84a2c08..80aa1b1e 100644 --- a/src/Security/Helper/FinishRegistrationBehavior.php +++ b/src/Security/Helper/FinishRegistrationBehavior.php @@ -11,8 +11,9 @@ namespace KnpU\OAuth2ClientBundle\Security\Helper; use KnpU\OAuth2ClientBundle\Security\Exception\FinishRegistrationException; -use Symfony\Component\HttpFoundation\RedirectResponse; +use LogicException; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Session\SessionInterface; /** * Use this trait if sometimes your authenticator requires people @@ -26,12 +27,17 @@ trait FinishRegistrationBehavior * @param Request $request * @param FinishRegistrationException $e * - * @return RedirectResponse + * @throws LogicException */ protected function saveUserInfoToSession(Request $request, FinishRegistrationException $e) { // save the user information! - $request->getSession()->set( + if (!$request->hasSession() || !$request->getSession() instanceof SessionInterface) { + throw new LogicException('In order to save user info, you must have a session available.'); + } + $session = $request->getSession(); + + $session->set( 'guard.finish_registration.user_information', $e->getUserInformation() ); @@ -43,9 +49,16 @@ protected function saveUserInfoToSession(Request $request, FinishRegistrationExc * @param Request $request * * @return mixed + * + * @throws LogicException */ public function getUserInfoFromSession(Request $request) { - return $request->getSession()->get('guard.finish_registration.user_information'); + if (!$request->hasSession() || !$request->getSession() instanceof SessionInterface) { + throw new LogicException('In order to have saved user info, you must have a session available.'); + } + $session = $request->getSession(); + + return $session->get('guard.finish_registration.user_information'); } } diff --git a/src/Security/Helper/PreviousUrlHelper.php b/src/Security/Helper/PreviousUrlHelper.php index 56da8660..0eeca7c2 100644 --- a/src/Security/Helper/PreviousUrlHelper.php +++ b/src/Security/Helper/PreviousUrlHelper.php @@ -11,6 +11,7 @@ namespace KnpU\OAuth2ClientBundle\Security\Helper; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Session\SessionInterface; trait PreviousUrlHelper { @@ -26,6 +27,10 @@ public function getPreviousUrl(Request $request, $providerKey) { // if the user hit a secure page and start() was called, this was // the URL they were on, and probably where you want to redirect to - return $request->getSession()->get('_security.'.$providerKey.'.target_path'); + if ($request->hasSession() && $request->getSession() instanceof SessionInterface) { + return $request->getSession()->get('_security.'.$providerKey.'.target_path'); + } + + return ''; } } diff --git a/src/Security/Helper/SaveAuthFailureMessage.php b/src/Security/Helper/SaveAuthFailureMessage.php index 7b9fdc26..c0672586 100644 --- a/src/Security/Helper/SaveAuthFailureMessage.php +++ b/src/Security/Helper/SaveAuthFailureMessage.php @@ -11,6 +11,7 @@ namespace KnpU\OAuth2ClientBundle\Security\Helper; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Session\SessionInterface; use Symfony\Component\Security\Core\Exception\AuthenticationException; use Symfony\Component\Security\Core\Security; @@ -18,6 +19,10 @@ trait SaveAuthFailureMessage { protected function saveAuthenticationErrorToSession(Request $request, AuthenticationException $exception) { + if (!$request->hasSession() || !$request->getSession() instanceof SessionInterface) { + throw new \LogicException('In order to save an authentication error, you must have a session available.'); + } + $request->getSession()->set(Security::AUTHENTICATION_ERROR, $exception); } } diff --git a/tests/Security/Helper/FinishRegistrationBehaviorTest.php b/tests/Security/Helper/FinishRegistrationBehaviorTest.php index 99872793..6052352f 100644 --- a/tests/Security/Helper/FinishRegistrationBehaviorTest.php +++ b/tests/Security/Helper/FinishRegistrationBehaviorTest.php @@ -10,6 +10,7 @@ namespace KnpU\OAuth2ClientBundle\tests\Security\Helper; +use LogicException; use Symfony\Component\HttpFoundation\Session\Session; use PHPUnit\Framework\TestCase; @@ -32,9 +33,21 @@ public function testGetUserInfoFromSession() $session = $this->prophesize(Session::class); $session->get('guard.finish_registration.user_information') ->willReturn(['username' => 'some_user_info']); + $request->hasSession()->willReturn(true); $request->getSession()->willReturn($session->reveal()); + $userInfo = $this->traitObject->getUserInfoFromSession($request->reveal()); $this->assertEquals($userInfo, ['username' => 'some_user_info']); } + + public function testGetUserInfoFromSessionWithoutSession() + { + $request = $this->prophesize('Symfony\Component\HttpFoundation\Request'); + $request->hasSession()->willReturn(false); + //$request->getSession()->willReturn(null); + + $this->expectException(LogicException::class); + $this->traitObject->getUserInfoFromSession($request->reveal()); + } } diff --git a/tests/Security/Helper/PreviousUrlHelperTest.php b/tests/Security/Helper/PreviousUrlHelperTest.php index 220ba231..ac506fe3 100644 --- a/tests/Security/Helper/PreviousUrlHelperTest.php +++ b/tests/Security/Helper/PreviousUrlHelperTest.php @@ -10,6 +10,7 @@ namespace KnpU\OAuth2ClientBundle\tests\Security\Helper; +use LogicException; use Symfony\Component\HttpFoundation\Session\Session; use PHPUnit\Framework\TestCase; @@ -33,6 +34,7 @@ public function testGetPreviousUrl() $session->get('_security.some_firewall_name.target_path') ->willReturn('/some/url'); + $request->hasSession()->willReturn(true); $request->getSession()->willReturn($session->reveal()); $previousUrl = $this->traitObject->getPreviousUrl( $request->reveal(), @@ -41,4 +43,17 @@ public function testGetPreviousUrl() $this->assertEquals($previousUrl, '/some/url'); } + + public function testGetPreviousUrlWithoutSession() + { + $request = $this->prophesize('Symfony\Component\HttpFoundation\Request'); + $request->hasSession()->willReturn(false); + + $previousUrl = $this->traitObject->getPreviousUrl( + $request->reveal(), + 'some_firewall_name' + ); + + $this->assertEquals($previousUrl, ''); + } }