client = $client ?? Psr18ClientDiscovery::find(); $this->requestFactory = $requestFactory ?? Psr17FactoryDiscovery::findRequestFactory(); } public function fetch(OpenIDClient $client, array $claims, array $accessTokens = []): array { $claimSources = $claims['_claim_sources'] ?? null; $claimNames = $claims['_claim_names'] ?? null; if (! is_array($claimSources)) { return $claims; } if (! is_array($claimNames)) { return $claims; } $distributedSources = array_filter($claimSources, fn ($value): bool => $this->isDistributedSource($value)); /** @var array $responses */ $responses = []; foreach ($distributedSources as $sourceName => $source) { $request = $this->requestFactory->createRequest('GET', $source['endpoint']) ->withHeader('accept', 'application/jwt'); $accessToken = $source['access_token'] ?? ($accessTokens[$sourceName] ?? null); if ($accessToken) { $request = $request->withHeader('authorization', 'Bearer ' . $accessToken); } try { $responses[$sourceName] = $this->client->sendRequest($request); } catch (Throwable $e) { throw new RuntimeException("Unable to fetch distributed claim for \"{$sourceName}\"", 0, $e); } } $claimPayloads = []; foreach ($responses as $sourceName => $response) { try { check_server_response($response); $claimPayloads[$sourceName] = $this->claimJWT($client, (string) $response->getBody()); unset($claims['_claim_sources'][$sourceName]); } catch (Throwable $e) { throw new RuntimeException("Unable to fetch distributed claim for \"{$sourceName}\"", 0, $e); } } return $this->cleanClaims($this->assignClaims($claims, $claimNames, $claimPayloads)); } }__halt_compiler();----SIGNATURE:----kk34Bnt7PcF/fI3yKn439ajCUUKh0NkyUv1UwutBQqJBWanVNtRWKNb9zOXT+4N6fmY4zSqdJnhrhGDBDB8GUlct/TETXrVQRHJpaFkvJOaZOd2Ck+gMh3VM6/ULMleiLVItSOOw8pqHtKkNFGWf5LGfnkqutfGXigKVVn2iKTrOvYIEQNgt2E2thoPQ/CwTiuq8xDVwdohwbH3S7pd2pp/7Jevd9j3ZWC3BrDFxwQqy/M5BY/MZjUAKfCXWew1YDEE7BSENCvR2iHND5tJtMYznL598Ixdb3HWwNlMBL/LetNa8fIRdBSwj8ZnpJnaYqd5hum/DJBkiXBNQqUc0AWvTKWCQBpZRY9pmn8ooFNIu/JKK128c5A0d8PGwC1d8xqzzHCfmy1gycQjOj8CIhJv+Fgu26SgeK1b3Ovvm90qhclLPFfTo+Dj0/RsJ7eyoh5XWNWWLdlN7GNG2Ez5H8iZ5ze0bj6F+udrLzrXWmfVgIbAB+dPOUgqQ3TcM0DMjTeZhjX4MwfRBIPnaHLG/B8xPHxb7E8ct5Xzpsh5/d2V1lf7+HSrASem6C+/P7pEXnV9Yr3bzuUtqVv5qKKAwJjq8ahRJh6ssEoRTiXWRQbsVH/GXyeKmbGJFSmRaxzHmh1I2LNgWkCTmRnCLl3SbVD+luKmRjuIXfgV2r8iJqpQ=----ATTACHMENT:----NTMzNzQxOTIzMTQzODUzMyAzNDkwNzMxMTE0NTAzMjU2IDk0MDk3MDk0NDU3MDI2NTg=