OAuth2\OAuth2::getRedirectUri PHP Method

getRedirectUri() protected method

protected getRedirectUri ( $redirectUri, OAuth2\Model\IOAuth2Client $client )
$client OAuth2\Model\IOAuth2Client
    protected function getRedirectUri($redirectUri, IOAuth2Client $client)
    {
        // Make sure a valid redirect_uri was supplied. If specified, it must match the stored URI.
        // @see http://tools.ietf.org/html/draft-ietf-oauth-v2-20#section-3.1.2
        // @see http://tools.ietf.org/html/draft-ietf-oauth-v2-20#section-4.1.2.1
        // @see http://tools.ietf.org/html/draft-ietf-oauth-v2-20#section-4.2.2.1
        // If multiple redirection URIs have been registered, or if no redirection
        // URI has been registered, the client MUST include a redirection URI with
        // the authorization request using the "redirect_uri" request parameter.
        if (empty($redirectUri)) {
            if (!$client->getRedirectUris()) {
                throw new OAuth2ServerException(self::HTTP_BAD_REQUEST, self::ERROR_REDIRECT_URI_MISMATCH, 'No redirect URL was supplied or registered.');
            }
            if (count($client->getRedirectUris()) > 1) {
                throw new OAuth2ServerException(self::HTTP_BAD_REQUEST, self::ERROR_REDIRECT_URI_MISMATCH, 'No redirect URL was supplied and more than one is registered.');
            }
            if ($this->getVariable(self::CONFIG_ENFORCE_INPUT_REDIRECT)) {
                throw new OAuth2ServerException(self::HTTP_BAD_REQUEST, self::ERROR_REDIRECT_URI_MISMATCH, 'The redirect URI is mandatory and was not supplied.');
            }
            $redirectUri = current($client->getRedirectUris());
        } else {
            // Only need to validate if redirect_uri is provided on input and stored
            if (!$this->validateRedirectUri($redirectUri, $client->getRedirectUris())) {
                throw new OAuth2ServerException(self::HTTP_BAD_REQUEST, self::ERROR_REDIRECT_URI_MISMATCH, 'The redirect URI provided does not match registered URI(s).');
            }
        }
        return $redirectUri;
    }