From f29d6ed08fa64ea01c2931200f607ada26c6d607 Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Wed, 8 Apr 2026 17:40:51 +0200 Subject: [PATCH] feat: add return types of OAuth providers types --- src/OAuth/DecidimProvider.php | 15 ++++++++------- src/OAuth/TokenOwner.php | 18 +++++++++++++++++- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/OAuth/DecidimProvider.php b/src/OAuth/DecidimProvider.php index 4475f8b..f3f701b 100644 --- a/src/OAuth/DecidimProvider.php +++ b/src/OAuth/DecidimProvider.php @@ -5,6 +5,7 @@ namespace App\OAuth; use App\Service\UserService; use League\OAuth2\Client\Provider\AbstractProvider; use League\OAuth2\Client\Provider\Exception\IdentityProviderException; +use League\OAuth2\Client\Provider\ResourceOwnerInterface; use League\OAuth2\Client\Token\AccessToken; use Psr\Http\Message\ResponseInterface; use Symfony\Component\HttpFoundation\Request; @@ -52,29 +53,29 @@ class DecidimProvider extends AbstractProvider return parent::__construct($options, $collaborators); } - public function getBaseAuthorizationUrl() + public function getBaseAuthorizationUrl(): string { return \sprintf('%s/oauth/authorize', $this->providerUri); } - public function getBaseAccessTokenUrl(array $params) + public function getBaseAccessTokenUrl(array $params): string { return \sprintf('%s/oauth/token', $this->providerUri); } - public function getResourceOwnerDetailsUrl(AccessToken $token) + public function getResourceOwnerDetailsUrl(AccessToken $token): string { return \sprintf('%s/oauth/me', $this->providerUri); } - public function getDefaultScopes() + public function getDefaultScopes(): array { return [ 'public', ]; } - protected function checkResponse(ResponseInterface $response, $data) + protected function checkResponse(ResponseInterface $response, $data): void { $code = $response->getStatusCode(); if ($code === Response::HTTP_OK) { @@ -84,7 +85,7 @@ class DecidimProvider extends AbstractProvider throw new IdentityProviderException('The instance returned a non-OK HTTP response', $code, $response); } - protected function fetchResourceOwnerDetails(AccessToken $token) + protected function fetchResourceOwnerDetails(AccessToken $token): mixed { $accessToken = $token->getToken(); @@ -101,7 +102,7 @@ class DecidimProvider extends AbstractProvider return $this->getParsedResponse($request); } - protected function createResourceOwner(array $response, AccessToken $token) + protected function createResourceOwner(array $response, AccessToken $token): ResourceOwnerInterface { [$firstName, $lastName] = UserService::guessNames($response['name']); diff --git a/src/OAuth/TokenOwner.php b/src/OAuth/TokenOwner.php index c0d6bf2..98a0d2e 100644 --- a/src/OAuth/TokenOwner.php +++ b/src/OAuth/TokenOwner.php @@ -2,7 +2,9 @@ namespace App\OAuth; -class TokenOwner implements TokenOwnerInterface +use League\OAuth2\Client\Provider\ResourceOwnerInterface; + +class TokenOwner implements TokenOwnerInterface, ResourceOwnerInterface { public function __construct( private string $email, @@ -10,6 +12,11 @@ class TokenOwner implements TokenOwnerInterface private string $lastName, ) {} + public function getId(): mixed + { + return $this->email; + } + public function getEmail(): string { return $this->email; @@ -24,4 +31,13 @@ class TokenOwner implements TokenOwnerInterface { return $this->lastName; } + + public function toArray(): array + { + return [ + 'email' => $this->email, + 'firstName' => $this->firstName, + 'lastName' => $this->lastName, + ]; + } }