From 56c83ba226d17b03935daf27350d53351a3fa3f4 Mon Sep 17 00:00:00 2001 From: "Kenneth Omondi (from Dev Box)" Date: Wed, 19 Jun 2024 15:00:59 +0300 Subject: [PATCH] Add client options to the `ProviderFactory::create` --- src/Oauth/ProviderFactory.php | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/src/Oauth/ProviderFactory.php b/src/Oauth/ProviderFactory.php index 7800f4d..f8ea2a4 100644 --- a/src/Oauth/ProviderFactory.php +++ b/src/Oauth/ProviderFactory.php @@ -12,29 +12,41 @@ class ProviderFactory * Initialises a PHP League provider for the Microsoft Identity platform * @param TokenRequestContext $tokenRequestContext * @param array $collaborators - * @param string $tokenServiceBaseUrl Base URL for the token and authorize endpoint. Defaults to + * @param string|null $tokenServiceBaseUrl Base URL for the token and authorize endpoint. Defaults to * https://login.microsoftonline.com - * @param string $userInfoServiceBaseUrl Base URL for the user info endpoint. Defaults to + * @param string|null $userInfoServiceBaseUrl Base URL for the user info endpoint. Defaults to * https://graph.microsoft.com + * @param array $clientOptions Additional client options to pass to the underlying http client. * @return GenericProvider */ public static function create( TokenRequestContext $tokenRequestContext, array $collaborators = [], - string $tokenServiceBaseUrl = 'https://login.microsoftonline.com', - string $userInfoServiceBaseUrl = 'https://graph.microsoft.com' + ?string $tokenServiceBaseUrl = null, + ?string $userInfoServiceBaseUrl = null, + array $clientOptions = [] ): GenericProvider { + if ($tokenServiceBaseUrl === null || empty(trim($tokenServiceBaseUrl))) { + $tokenServiceBaseUrl = 'https://login.microsoftonline.com'; + } + if ($userInfoServiceBaseUrl === null || empty(trim($userInfoServiceBaseUrl))) { + $userInfoServiceBaseUrl = 'https://graph.microsoft.com'; + } + $grantFactory = new GrantFactory(); // Add our custom grant type to the registry $grantFactory->setGrant('urn:ietf:params:Oauth:grant-type:jwt-bearer', new OnBehalfOfGrant()); - return new GenericProvider([ - 'urlAccessToken' => "$tokenServiceBaseUrl/{$tokenRequestContext->getTenantId()}/oauth2/v2.0/token", - 'urlAuthorize' => "$tokenServiceBaseUrl/{$tokenRequestContext->getTenantId()}/oauth2/v2.0/authorize", - 'urlResourceOwnerDetails' => "$userInfoServiceBaseUrl/oidc/userinfo", - 'accessTokenResourceOwnerId' => 'id_token' - ], $collaborators + [ + $allOptions = array_merge( + [ + 'urlAccessToken' => "$tokenServiceBaseUrl/{$tokenRequestContext->getTenantId()}/oauth2/v2.0/token", + 'urlAuthorize' => "$tokenServiceBaseUrl/{$tokenRequestContext->getTenantId()}/oauth2/v2.0/authorize", + 'urlResourceOwnerDetails' => "$userInfoServiceBaseUrl/oidc/userinfo", + 'accessTokenResourceOwnerId' => 'id_token' + ], $clientOptions + ); + return new GenericProvider($allOptions, $collaborators + [ 'grantFactory' => $grantFactory ]); }