diff options
author | Roeland Jago Douma <rullzer@users.noreply.github.com> | 2020-05-07 19:51:47 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-07 19:51:47 +0200 |
commit | 50d823fce34abace182b47b0190e8b846869c554 (patch) | |
tree | 13cd967c5d0bcac469334689e7d1bbf6c08a807c | |
parent | 0643801d9beec3e0ba5827c5d526ef3dde223348 (diff) | |
parent | ffad3f83fe97a6eb9943de4e004e49ac1590d2e4 (diff) | |
download | nextcloud-server-50d823fce34abace182b47b0190e8b846869c554.tar.gz nextcloud-server-50d823fce34abace182b47b0190e8b846869c554.zip |
Merge pull request #20859 from nextcloud/fix/20838/validate_apppassword
Validate app password on alternative login
-rw-r--r-- | core/Controller/ClientFlowLoginController.php | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/core/Controller/ClientFlowLoginController.php b/core/Controller/ClientFlowLoginController.php index d5beded9581..80cf94a7900 100644 --- a/core/Controller/ClientFlowLoginController.php +++ b/core/Controller/ClientFlowLoginController.php @@ -377,6 +377,24 @@ class ClientFlowLoginController extends Controller { return $this->stateTokenForbiddenResponse(); } + try { + $token = $this->tokenProvider->getToken($password); + if ($token->getLoginName() !== $user) { + throw new InvalidTokenException('login name does not match'); + } + } catch (InvalidTokenException $e) { + $response = new StandaloneTemplateResponse( + $this->appName, + '403', + [ + 'message' => $this->l10n->t('Invalid app password'), + ], + 'guest' + ); + $response->setStatus(Http::STATUS_FORBIDDEN); + return $response; + } + $redirectUri = 'nc://login/server:' . $this->getServerPath() . '&user:' . urlencode($user) . '&password:' . urlencode($password); return new Http\RedirectResponse($redirectUri); } |