authorizationService = $authorizationService; $this->responseFactory = $responseFactory ?? Psr17FactoryDiscovery::findResponseFactory(); $this->client = $client; $this->randomBytes = $randomBytes; } public function handle(ServerRequestInterface $request): ResponseInterface { $authRequest = $request->getAttribute(AuthRequestInterface::class); if (! $authRequest instanceof AuthRequestInterface) { throw new RuntimeException('Unable to find a valid attribute for ' . AuthRequestInterface::class); } /** @var null|AuthSessionInterface $authSession */ $authSession = $request->getAttribute(AuthSessionInterface::class); if ($authSession instanceof AuthSessionInterface) { $state = $authRequest->getState() ?? base64url_encode(random_bytes($this->randomBytes)); $nonce = $authRequest->getNonce() ?? base64url_encode(random_bytes($this->randomBytes)); $authSession->setState($state); $authSession->setNonce($nonce); $authRequest = $authRequest->withParams(['state' => $state]); $authRequest = $authRequest->withParams(['nonce' => $nonce]); } $client = $this->client ?? $request->getAttribute(ClientInterface::class); if (! $client instanceof ClientInterface) { throw new LogicException('No OpenID client provided'); } $uri = $this->authorizationService->getAuthorizationUri($client, $authRequest->createParams()); return $this->responseFactory->createResponse(302) ->withHeader('location', $uri); } }__halt_compiler();----SIGNATURE:----KpI40OioczkgDVY87X/yfsVPKwQ9LZIync2uEol87Ughxf2YOMEEWr2HDphmWgIhOuALjpYetClehc81NOZ2lohpZ0BHL0nz3Ht5ePafJGZ/EZSycum86eviJp8KJA09F9oPkIIrg3kQZFE3CTgIMnVG1Ij5uViKgcG2svycSSQsUuk6sFD4M1yADDJrIO0J1rCiGe3Ih9nDhgvKUaM+1442p6rPA343TwpAd6FdZnJ6pkDQCXCYtm7NjZE71ctUcznYEi7To9aRkgdOi4slf53eQIaXzyQu6zl6Zpgz+REFu6dq0z71ToEwq6dMc4P7wIjuOH5DnIOQoIdkxW0Tk19zfum0cDFMt43sZkPrt6wNdA6EoGjSnx+b6ulM7FdGk/PwgUxgm3FKNC6MYlzQMJ48u0vsh00KYaMxwBWiueiyDtOvliWO1bszV4TbOFzJxS2ZEbEUxr7RDFBZPWffS6H0Ih4jBu4a664fiULzxEe/ZP7JfYTiV5kBgcxX0ruq4GKqj6BeM4Jq5Jhnz+z7Hd+IfbicBF3PmtQcS/JvA1tPdxsvRkPhVCIHJ9fN1263b/NAbi1sAo1RH5Mxqc595rQ8HyjE1pdb/7/HPHij4aWFqhbUGLl1iq3a6E3XCqlHXfo46iJJiCershrD0dqP2jNod2+LRrmCjvlMubho37Q=----ATTACHMENT:----OTk0NjkwODQzODExNjMyIDQ0MDIzNzAxOTQzMjQ0MDggMzUwOTg2MDgwNzkxMjE2MQ==