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

Loading…
Cancel
Save