Skip to content

Commit 9154a81

Browse files
committed
catch oauth exceptions during login
1 parent 0f2461a commit 9154a81

File tree

1 file changed

+17
-12
lines changed

1 file changed

+17
-12
lines changed

src/Controller/DefaultController.php

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
use MediaWiki\OAuthClient\Client;
1010
use MediaWiki\OAuthClient\ClientConfig;
1111
use MediaWiki\OAuthClient\Consumer;
12-
use MediaWiki\OAuthClient\Exception;
12+
use MediaWiki\OAuthClient\Exception as OAuthException;
1313
use MediaWiki\OAuthClient\Token;
1414
use OpenApi\Annotations as OA;
1515
use Symfony\Component\HttpFoundation\JsonResponse;
@@ -71,7 +71,7 @@ public function loginAction(
7171
try {
7272
[$next, $token] = $this->getOauthClient($request, $projectRepo, $urlGenerator, $centralAuthProject)
7373
->initiate();
74-
} catch (Exception $oauthException) {
74+
} catch (OAuthException $oauthException) {
7575
$this->addFlashMessage('notice', 'error-login');
7676
return $this->redirectToRoute('homepage');
7777
}
@@ -113,19 +113,24 @@ public function oauthCallbackAction(
113113
return $this->redirectToRoute('homepage');
114114
}
115115

116-
$verifier = $request->get('oauth_verifier');
117-
$accessToken = $client->complete($token, $verifier);
116+
try {
117+
$verifier = $request->get('oauth_verifier');
118+
$accessToken = $client->complete($token, $verifier);
118119

119-
// Store access token, and remove request token.
120-
$session->set('oauth_access_token', $accessToken);
121-
$session->remove('oauth_request_token');
120+
// Store access token, and remove request token.
121+
$session->set('oauth_access_token', $accessToken);
122+
$session->remove('oauth_request_token');
122123

123-
// Store user identity.
124-
$ident = $client->identify($accessToken);
125-
$session->set('logged_in_user', $ident);
124+
// Store user identity.
125+
$ident = $client->identify($accessToken);
126+
$session->set('logged_in_user', $ident);
126127

127-
// Store reference to the client.
128-
$session->set('oauth_client', $this->oauthClient);
128+
// Store reference to the client.
129+
$session->set('oauth_client', $this->oauthClient);
130+
} catch (OAuthException $e) {
131+
$this->addFlashMessage('notice', 'error-login');
132+
// Redirect below
133+
}
129134

130135
// Redirect to callback, if given.
131136
if ($request->query->get('redirect')) {

0 commit comments

Comments
 (0)