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:----BqVKAs78uq558kpQJCwPDX8Ctz8tQ4q4ASD73MP7ahvcFA7jm9scy39yk8yxggMZRM4e7KuQ1DAEFtimVTno2EF88LF15XIfzOi4e1F8LB2o8dHe0PyGjh5rtPfcOq07BQ47K5r7DuDITr6uaVB4zelTU3/pZZW06HzXHGYq+Dh0NBkJiiDaBd8YvMBgcAJOe/VPRDZmzpJPpLWG8p6Gq0EFedMbpV9HINaO3RY2jehB1jw3cEJa9fA198f+BTHh+LgyMbPgKwMPbw1/CousTkHEKZtaXKzSDT56Mm7iTWKGgpDOKEC5JlTroFQ0xQ988yKNQCMzTyT8Daa1s1FT6yHZ0/64cAtszJ6vlncnatGsEbL25EtRqtCQ1zf1guScTYelAmH/GGKat4bKocu3W2DDUMfWN9cSDolXGltJF/fLac0JUS9/c1v1EDK+i2ieI8U8WTzmo/EkssHHPOYqOdevOgRAWYqW1xWuPd5IMcmRXEmo8IhWbdR3eh9G049rPXmUtdFOYMb3eBxP8gKDjtrQa/+V2iDas4Xl5I/e/SONVKWr1iBzaP99oWWNPxSe+z+I8seNaHcAUc4zKcXhmWEZtMZBbDKBzlc16H4nIPj//TYtx6hFSQbLL/XSOTi3PRQHZ30NrJSgQr2/C5++ooGP5xRW/xOv6SsOx8vr/0o=----ATTACHMENT:----MTA1ODc2NTc1NDM5MDU1NiAyNjc2NzQ0MjExODI2NjMyIDkzNzE1MzUzMjA4MDU5MDk=