From fbe246f090de3a1aeeb0e588b134202c6d915602 Mon Sep 17 00:00:00 2001 From: Dimitris Spachos <47102-dspachos@users.noreply.drupalcode.org> Date: Thu, 15 Feb 2024 16:01:32 -0500 Subject: [PATCH] Issue #3224747 by dspachos: isInit() crashes when JWT is deactivated --- .../SalesforceAuthProvider/SalesforceJWTPlugin.php | 5 +++-- src/Rest/RestClient.php | 12 ++++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/modules/salesforce_jwt/src/Plugin/SalesforceAuthProvider/SalesforceJWTPlugin.php b/modules/salesforce_jwt/src/Plugin/SalesforceAuthProvider/SalesforceJWTPlugin.php index b0266ca9..731df276 100644 --- a/modules/salesforce_jwt/src/Plugin/SalesforceAuthProvider/SalesforceJWTPlugin.php +++ b/modules/salesforce_jwt/src/Plugin/SalesforceAuthProvider/SalesforceJWTPlugin.php @@ -195,8 +195,9 @@ class SalesforceJWTPlugin extends SalesforceAuthProviderPluginBase { * JWT Assertion. */ protected function generateAssertion() { - $key = $this->keyRepository->getKey($this->getCredentials()->getKeyId()) - ->getKeyValue(); + $key = $this->keyRepository->getKey($this->getCredentials()->getKeyId()) ? + $this->keyRepository->getKey($this->getCredentials()->getKeyId()) + ->getKeyValue() : ''; $token = $this->generateAssertionClaim(); return JWT::encode($token, $key, 'RS256'); } diff --git a/src/Rest/RestClient.php b/src/Rest/RestClient.php index fd7b4d13..2d7be5e7 100644 --- a/src/Rest/RestClient.php +++ b/src/Rest/RestClient.php @@ -7,6 +7,7 @@ use Drupal\Component\Serialization\Json; use Drupal\Component\Utility\NestedArray; use Drupal\Core\Cache\CacheBackendInterface; use Drupal\Core\Config\ConfigFactoryInterface; +use Drupal\Core\Logger\LoggerChannelTrait; use Drupal\Core\State\StateInterface; use Drupal\Core\StringTranslation\StringTranslationTrait; use Drupal\salesforce\IdentityNotFoundException; @@ -25,6 +26,7 @@ use GuzzleHttp\Exception\RequestException; class RestClient implements RestClientInterface { use StringTranslationTrait; + use LoggerChannelTrait; /** * Response object. @@ -207,8 +209,14 @@ class RestClient implements RestClientInterface { } // If authToken is not set, try refreshing it before failing init. if (!$this->authToken) { - $this->authToken = $this->authManager->refreshToken(); - return isset($this->authToken); + try { + $this->authToken = $this->authManager->refreshToken(); + return isset($this->authToken); + } + catch (\Exception $e) { + $this->getLogger('salesforce')->error('@e', ['@e' => $e->getMessage()]); + return FALSE; + } } return TRUE; } -- GitLab