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