diff options
author | Lukas Reschke <lukas@statuscode.ch> | 2016-08-29 21:54:18 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-08-29 21:54:18 +0200 |
commit | 1702abc2042f1c1c85df3886c477f9d1a31738cb (patch) | |
tree | a7a8860e9616b5065578326bef967125ac3876d4 /core | |
parent | 9ebc58c3d8ca76b92bca95a60addb29e07e7f822 (diff) | |
parent | 291dd0bd31e344b294d6dda506c614df7ea12382 (diff) | |
download | nextcloud-server-1702abc2042f1c1c85df3886c477f9d1a31738cb.tar.gz nextcloud-server-1702abc2042f1c1c85df3886c477f9d1a31738cb.zip |
Merge pull request #1169 from nextcloud/2fa-single-provider
redirect to 2fa provider if there's only one active for the user
Diffstat (limited to 'core')
-rw-r--r-- | core/Controller/LoginController.php | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/core/Controller/LoginController.php b/core/Controller/LoginController.php index 67e1e215289..b686b34b2ce 100644 --- a/core/Controller/LoginController.php +++ b/core/Controller/LoginController.php @@ -242,12 +242,26 @@ class LoginController extends Controller { if ($this->twoFactorManager->isTwoFactorAuthenticated($loginResult)) { $this->twoFactorManager->prepareTwoFactorLogin($loginResult); + + $providers = $this->twoFactorManager->getProviders($loginResult); + if (count($providers) === 1) { + // Single provider, hence we can redirect to that provider's challenge page directly + /* @var $provider IProvider */ + $provider = array_pop($providers); + $url = 'core.TwoFactorChallenge.showChallenge'; + $urlParams = [ + 'challengeProviderId' => $provider->getId(), + ]; + } else { + $url = 'core.TwoFactorChallenge.selectChallenge'; + $urlParams = []; + } + if (!is_null($redirect_url)) { - return new RedirectResponse($this->urlGenerator->linkToRoute('core.TwoFactorChallenge.selectChallenge', [ - 'redirect_url' => $redirect_url - ])); + $urlParams['redirect_url'] = $redirect_url; } - return new RedirectResponse($this->urlGenerator->linkToRoute('core.TwoFactorChallenge.selectChallenge')); + + return new RedirectResponse($this->urlGenerator->linkToRoute($url, $urlParams)); } return $this->generateRedirect($redirect_url); |