From f3096b6f148571dc2c1dea217446894ef0a9dcc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Droz?= Date: Tue, 29 May 2018 09:06:42 -0300 Subject: [PATCH] fix a notice: If using traditional login, $token_response may be empty (#86) fix a 404: In Bedrock-like layout configuration, $redirect_url === 'wp-login.php?loggedout=true' (which work for local redirection). But canonicalization should take into account the additional /wp/ prefix. site_url() does meanwhile home_url() does not. --- includes/openid-connect-generic-client-wrapper.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/includes/openid-connect-generic-client-wrapper.php b/includes/openid-connect-generic-client-wrapper.php index 38e6c16..cb4301a 100644 --- a/includes/openid-connect-generic-client-wrapper.php +++ b/includes/openid-connect-generic-client-wrapper.php @@ -221,12 +221,16 @@ class OpenID_Connect_Generic_Client_Wrapper { $redirect_url = ''; } - // convert to absolute url if needed - if ( ! parse_url( $redirect_url, PHP_URL_HOST ) ) { - $redirect_url = home_url( $redirect_url ); + $token_response = $user->get('openid-connect-generic-last-token-response'); + if (! $token_response ) { + // happens if non-openid login was used + return $redirect_url; + } + else if ( ! parse_url( $redirect_url, PHP_URL_HOST ) ) { + // convert to absolute url if needed. site_url() to be friendly with non-standard (Bedrock) layout + $redirect_url = site_url( $redirect_url ); } - $token_response = $user->get('openid-connect-generic-last-token-response'); $claim = $user->get( 'openid-connect-generic-last-id-token-claim' ); if ( isset( $claim['iss'] ) && $claim['iss'] == 'https://accounts.google.com' ) {