From 23e2bc019b76790a7831cdcadefa0c7a480f1643 Mon Sep 17 00:00:00 2001 From: DrNixx Date: Fri, 10 Apr 2026 12:19:51 +0300 Subject: [PATCH] Caching autoDiscovery result --- src/Traits/AutoDiscovery.php | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/Traits/AutoDiscovery.php b/src/Traits/AutoDiscovery.php index 33268d5b..d2dd95d7 100644 --- a/src/Traits/AutoDiscovery.php +++ b/src/Traits/AutoDiscovery.php @@ -17,6 +17,7 @@ namespace Maicol07\OpenIDConnect\Traits; use Illuminate\Http\Client\ConnectionException; +use Illuminate\Support\Facades\Cache; use Illuminate\Support\Str; use Maicol07\OpenIDConnect\ClientAuthMethod; use Maicol07\OpenIDConnect\CodeChallengeMethod; @@ -38,12 +39,18 @@ trait AutoDiscovery public function autoDiscovery(?string $provider_url, array|string|null $query_params = null): void { if ($provider_url) { - $response = $this->client() - ->get("$provider_url/$this->DISCOVERY_PATH", $query_params); + $cacheKey = 'oidc:discovery:' . md5(json_encode([$provider_url, $query_params])); + /** @noinspection LaravelFunctionsInspection */ + $cacheTtl = env('OIDC_DISCOVERY_CACHE_TTL', 3600); - if ($response->ok()) { - $config = $response->collect(); + $config = Cache::remember($cacheKey, $cacheTtl, function () use ($provider_url, $query_params) { + $response = $this->client() + ->get("$provider_url/$this->DISCOVERY_PATH", $query_params); + return $response->ok() ? $response->collect() : null; + }); + + if ($config) { // Response types $response_types = []; $response_types_supported = $config->get('response_types_supported');