Plugin: OAuth2: Fix catch BadMethodCallException when refreshing token - refs BT#19734

pull/4359/head
Angel Fernando Quiroz Campos 3 years ago
parent 65bfb3eb5b
commit 9388a5db4a
  1. 19
      plugin/oauth2/index.php

@ -8,6 +8,10 @@
*/ */
/** @var OAuth2 $oAuth2Plugin */ /** @var OAuth2 $oAuth2Plugin */
use League\OAuth2\Client\Provider\Exception\IdentityProviderException;
use League\OAuth2\Client\Token\AccessToken;
$oAuth2Plugin = OAuth2::create(); $oAuth2Plugin = OAuth2::create();
if ($oAuth2Plugin->get(OAuth2::SETTING_ENABLE) === 'true') { if ($oAuth2Plugin->get(OAuth2::SETTING_ENABLE) === 'true') {
@ -30,19 +34,16 @@ if ($oAuth2Plugin->get(OAuth2::SETTING_ENABLE) === 'true') {
} }
if (ChamiloSession::has('oauth2AccessToken')) { if (ChamiloSession::has('oauth2AccessToken')) {
$accessToken = new \League\OAuth2\Client\Token\AccessToken(ChamiloSession::read('oauth2AccessToken')); $accessToken = new AccessToken(ChamiloSession::read('oauth2AccessToken'));
if ($accessToken->hasExpired()) { if ($accessToken->hasExpired()) {
$provider = $oAuth2Plugin->getProvider(); $provider = $oAuth2Plugin->getProvider();
try { try {
try { $newAccessToken = $provider->getAccessToken(
$newAccessToken = $provider->getAccessToken('refresh_token', [ 'refresh_token',
'refresh_token' => $accessToken->getRefreshToken(), ['refresh_token' => $accessToken->getRefreshToken()]
]); );
} catch (BadMethodCallException $exception) {
online_logout(null, true);
}
ChamiloSession::write('oauth2AccessToken', $newAccessToken->jsonSerialize()); ChamiloSession::write('oauth2AccessToken', $newAccessToken->jsonSerialize());
} catch (\League\OAuth2\Client\Provider\Exception\IdentityProviderException $exception) { } catch (IdentityProviderException|\BadMethodCallException $e) {
online_logout(null, true); online_logout(null, true);
} }
} }

Loading…
Cancel
Save