Add getter for the OAuthServerException::redirectUri param and make it public

This commit is contained in:
ErickSkrauch 2019-08-23 00:00:15 +03:00
parent 0b0b43d433
commit 3684a76ade

View File

@ -294,14 +294,9 @@ class OAuthServerException extends Exception
$payload = $this->getPayload(); $payload = $this->getPayload();
if ($this->redirectUri !== null) { $redirectUri = $this->getRedirectUri($useFragment);
if ($useFragment === true) { if ($redirectUri !== null) {
$this->redirectUri .= (strstr($this->redirectUri, '#') === false) ? '#' : '&'; return $response->withStatus(302)->withHeader('Location', $redirectUri);
} else {
$this->redirectUri .= (strstr($this->redirectUri, '?') === false) ? '?' : '&';
}
return $response->withStatus(302)->withHeader('Location', $this->redirectUri . http_build_query($payload));
} }
foreach ($headers as $header => $content) { foreach ($headers as $header => $content) {
@ -359,6 +354,31 @@ class OAuthServerException extends Exception
return $this->redirectUri !== null; return $this->redirectUri !== null;
} }
/**
* Returns the redirectUri with all necessary args.
*
* Null will be returned if the exception doesn't contain the redirectUri.
*
* @param bool $useFragment True if errors should be in the URI fragment instead of query string
*
* @return string|null
*/
public function getRedirectUri(bool $useFragment = false): ?string
{
if ($this->redirectUri === null) {
return null;
}
$redirectUri = $this->redirectUri;
if ($useFragment) {
$redirectUri .= strpos($this->redirectUri, '#') === false ? '#' : '&';
} else {
$redirectUri .= strpos($this->redirectUri, '?') === false ? '?' : '&';
}
return $redirectUri . http_build_query($this->getPayload());
}
/** /**
* Returns the HTTP status code to send when the exceptions is output. * Returns the HTTP status code to send when the exceptions is output.
* *