Skip to content

Commit 04149f8

Browse files
committed
Bugfix: Improved robustness of AbstractAuthorizationProvider->getAccessToken to avoid PHP error and show error text in webtrees
1 parent 2d51275 commit 04149f8

File tree

3 files changed

+28
-16
lines changed

3 files changed

+28
-16
lines changed

resources/lang/de.mo

-142 Bytes
Binary file not shown.

resources/lang/de.po

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
msgid ""
22
msgstr ""
33
"Project-Id-Version: OAuth2Client\n"
4-
"POT-Creation-Date: 2025-04-12 10:03+0200\n"
5-
"PO-Revision-Date: 2025-04-12 10:07+0200\n"
4+
"POT-Creation-Date: 2025-04-12 11:08+0200\n"
5+
"PO-Revision-Date: 2025-04-12 11:09+0200\n"
66
"Last-Translator: \n"
77
"Language-Team: \n"
88
"Language: de\n"
@@ -239,24 +239,23 @@ msgstr ""
239239
"führen. Es wird dringend empfohlen, eines der Module zu deaktivieren. Der "
240240
"Pfad für den Custom View ist: %s"
241241

242-
#: src/Provider/AbstractAuthorizationProvider.php:133
242+
#: src/Provider/AbstractAuthorizationProvider.php:145
243243
msgid ""
244244
"Error while trying to get an access token from the authorization provider. "
245245
"Check the setting for urlAccessToken in the webtrees configuration. Check "
246-
"the server access logs (or .htaccess configuration files) whether any 301 or "
247-
"302 redirects are applied, which might convert POST into GET requests."
246+
"the server access logs for errors. Check the server configuration for "
247+
"redirects."
248248
msgstr ""
249-
"Beim Versuch, ein Zugriffstoken vom Autorisierungsanbieter abzurufen, ist "
250-
"ein Fehler aufgetreten. Überprüfen Sie die Einstellung für urlAccessToken in "
251-
"der webtrees Konfiguration. Überprüfen Sie die Server-Zugriffsprotokolle "
252-
"(oder .htaccess Konfigurationsdateien), ob 301- oder 302-Weiterleitungen "
253-
"angewendet werden, die möglicherweise POST- in GET-Anfragen umwandeln."
249+
"Beim Abrufen eines Zugriffstokens vom Autorisierungsanbieter ist ein Fehler "
250+
"aufgetreten. Überprüfen Sie die Einstellung für „urlAccessToken“ in der "
251+
"webtrees-Konfiguration. Überprüfen Sie die Serverzugriffsprotokolle auf "
252+
"Fehler. Überprüfen Sie die Serverkonfiguration auf Weiterleitungen."
254253

255-
#: src/Provider/AbstractAuthorizationProvider.php:165
254+
#: src/Provider/AbstractAuthorizationProvider.php:177
256255
msgid "Invalid user data received from the authorization provider"
257256
msgstr "Ungültige Benutzerdaten vom Authorisierungsanbieter empfangen"
258257

259-
#: src/Provider/AbstractAuthorizationProvider.php:165
258+
#: src/Provider/AbstractAuthorizationProvider.php:177
260259
msgid ""
261260
"Check the setting for urlResourceOwnerDetails in the webtrees configuration."
262261
msgstr ""

src/Provider/AbstractAuthorizationProvider.php

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@
3838
use League\OAuth2\Client\Provider\ResourceOwnerInterface;
3939
use League\OAuth2\Client\Token\AccessToken;
4040
use League\OAuth2\Client\Token\AccessTokenInterface;
41+
use Psr\Http\Message\ResponseInterface;
42+
4143
use Exception;
4244

4345

@@ -126,11 +128,22 @@ public function getAccessToken($grant, array $options = [])
126128
catch (IdentityProviderException $e) {
127129
$message = $e->getMessage();
128130
$response = $e->getResponseBody();
129-
$status_code = $response->getStatusCode();
130-
$reason_phrase = $response->getReasonPhrase();
131-
$error_text = ' Error message: ' . $message . ', Status code: ' . $status_code . ', Reason phrase: ' . $reason_phrase . ' .';
132131

133-
throw new IdentityProviderException($error_text . I18N::translate('Error while trying to get an access token from the authorization provider. Check the setting for urlAccessToken in the webtrees configuration. Check the server access logs (or .htaccess configuration files) whether any 301 or 302 redirects are applied, which might convert POST into GET requests.'), 0, 0);
132+
if ($response instanceof ResponseInterface) {
133+
$status_code = $response->getStatusCode();
134+
$reason_phrase = $response->getReasonPhrase();
135+
}
136+
else {
137+
$status_code = '';
138+
$reason_phrase = '';
139+
}
140+
141+
$error_text = 'Error message: ' . $message .
142+
($status_code !== '' ? ', Status code: '. $status_code : '') .
143+
($reason_phrase !== '' ? ', Reason phrase: '. $reason_phrase : '') .
144+
'.';
145+
146+
throw new IdentityProviderException($error_text . ' ' . I18N::translate('Error while trying to get an access token from the authorization provider. Check the setting for urlAccessToken in the webtrees configuration. Check the server access logs for errors. Check the server configuration for redirects.'), 0, 0);
134147
}
135148
}
136149

0 commit comments

Comments
 (0)