summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoeland Jago Douma <rullzer@users.noreply.github.com>2020-05-07 19:51:47 +0200
committerGitHub <noreply@github.com>2020-05-07 19:51:47 +0200
commit50d823fce34abace182b47b0190e8b846869c554 (patch)
tree13cd967c5d0bcac469334689e7d1bbf6c08a807c
parent0643801d9beec3e0ba5827c5d526ef3dde223348 (diff)
parentffad3f83fe97a6eb9943de4e004e49ac1590d2e4 (diff)
downloadnextcloud-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.php18
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);
}