diff options
author | Roeland Jago Douma <roeland@famdouma.nl> | 2020-05-07 16:32:28 +0200 |
---|---|---|
committer | Roeland Jago Douma <roeland@famdouma.nl> | 2020-05-07 16:32:28 +0200 |
commit | ffad3f83fe97a6eb9943de4e004e49ac1590d2e4 (patch) | |
tree | 883de67e4f485a6887b8e580a3d2a375c1c4d967 | |
parent | d7305798092ba3c409ca330fbe526a096e2003bc (diff) | |
download | nextcloud-server-ffad3f83fe97a6eb9943de4e004e49ac1590d2e4.tar.gz nextcloud-server-ffad3f83fe97a6eb9943de4e004e49ac1590d2e4.zip |
Validate app password on alternative login
Fixes #20838
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
-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); } |