client = $client; $this->hydraAdminBaseUrl = $hydraAdminBaseUrl; } public function fetchLoginRequestInfo(string $loginChallenge): ResponseInterface { $response = $this->client->request( 'GET', $this->hydraAdminBaseUrl . '/oauth2/auth/requests/login', [ 'query' => [ 'login_challenge' => $loginChallenge, ] ] ); switch ($response->getStatusCode()) { case 404: throw new InvalidChallengeException(); } return $response; } public function fetchLogoutRequestInfo(string $logoutChallenge): ResponseInterface { $response = $this->client->request( 'GET', $this->hydraAdminBaseUrl . '/oauth2/auth/requests/logout', [ 'query' => [ 'logout_challenge' => $logoutChallenge, ] ] ); switch ($response->getStatusCode()) { case 404: throw new InvalidChallengeException(); } return $response; } public function fetchConsentRequestInfo(string $consentChallenge): ResponseInterface { $response = $this->client->request( 'GET', $this->hydraAdminBaseUrl . '/oauth2/auth/requests/consent', [ 'query' => [ 'consent_challenge' => $consentChallenge, ] ] ); switch ($response->getStatusCode()) { case 404: throw new InvalidChallengeException(); } return $response; } public function acceptLoginRequest(string $loginChallenge, array $payload): ResponseInterface { $response = $this->client->request( 'PUT', $this->hydraAdminBaseUrl . '/oauth2/auth/requests/login/accept', [ 'query' => [ 'login_challenge' => $loginChallenge, ], 'headers' => [ 'Content-Type' => 'application/json' ], 'body' => json_encode($payload), ] ); return $response; } public function acceptConsentRequest(string $consentChallenge, array $payload): ResponseInterface { $response = $this->client->request( 'PUT', $this->hydraAdminBaseUrl . '/oauth2/auth/requests/consent/accept', [ 'query' => [ 'consent_challenge' => $consentChallenge, ], 'headers' => [ 'Content-Type' => 'application/json' ], 'body' => json_encode($payload), ] ); return $response; } public function acceptLogoutRequest(string $logoutChallenge): ResponseInterface { $response = $this->client->request( 'PUT', $this->hydraAdminBaseUrl . '/oauth2/auth/requests/logout/accept', [ 'query' => [ 'logout_challenge' => $logoutChallenge, ], 'headers' => [ 'Content-Type' => 'application/json' ], ] ); return $response; } }