diff options
author | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2024-06-12 19:37:41 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-12 19:37:41 +0200 |
commit | 464cfce9b51bcbc53a76c1308f76f3f8e6b26cbf (patch) | |
tree | 046463913b9324e533428cf946b7459e2727c69d /core/Controller | |
parent | a41941692d116b85f386c22004840f5deee2b90e (diff) | |
parent | 67071f887525a2298e76b5d34f9856febc364f07 (diff) | |
download | nextcloud-server-464cfce9b51bcbc53a76c1308f76f3f8e6b26cbf.tar.gz nextcloud-server-464cfce9b51bcbc53a76c1308f76f3f8e6b26cbf.zip |
Merge pull request #44977 from nextcloud/backport/44745/stable29
[stable29] fix(auth): Keep redirect URL during 2FA setup and challenge
Diffstat (limited to 'core/Controller')
-rw-r--r-- | core/Controller/TwoFactorChallengeController.php | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/core/Controller/TwoFactorChallengeController.php b/core/Controller/TwoFactorChallengeController.php index 7152078c338..48fd365fd12 100644 --- a/core/Controller/TwoFactorChallengeController.php +++ b/core/Controller/TwoFactorChallengeController.php @@ -213,13 +213,14 @@ class TwoFactorChallengeController extends Controller { * @NoCSRFRequired */ #[FrontpageRoute(verb: 'GET', url: 'login/setupchallenge')] - public function setupProviders(): StandaloneTemplateResponse { + public function setupProviders(?string $redirect_url = null): StandaloneTemplateResponse { $user = $this->userSession->getUser(); $setupProviders = $this->twoFactorManager->getLoginSetupProviders($user); $data = [ 'providers' => $setupProviders, 'logout_url' => $this->getLogoutUrl(), + 'redirect_url' => $redirect_url, ]; return new StandaloneTemplateResponse($this->appName, 'twofactorsetupselection', $data, 'guest'); @@ -230,7 +231,7 @@ class TwoFactorChallengeController extends Controller { * @NoCSRFRequired */ #[FrontpageRoute(verb: 'GET', url: 'login/setupchallenge/{providerId}')] - public function setupProvider(string $providerId) { + public function setupProvider(string $providerId, ?string $redirect_url = null) { $user = $this->userSession->getUser(); $providers = $this->twoFactorManager->getLoginSetupProviders($user); @@ -251,6 +252,7 @@ class TwoFactorChallengeController extends Controller { $data = [ 'provider' => $provider, 'logout_url' => $this->getLogoutUrl(), + 'redirect_url' => $redirect_url, 'template' => $tmpl->fetchPage(), ]; $response = new StandaloneTemplateResponse($this->appName, 'twofactorsetupchallenge', $data, 'guest'); @@ -264,11 +266,12 @@ class TwoFactorChallengeController extends Controller { * @todo handle the extreme edge case of an invalid provider ID and redirect to the provider selection page */ #[FrontpageRoute(verb: 'POST', url: 'login/setupchallenge/{providerId}')] - public function confirmProviderSetup(string $providerId) { + public function confirmProviderSetup(string $providerId, ?string $redirect_url = null) { return new RedirectResponse($this->urlGenerator->linkToRoute( 'core.TwoFactorChallenge.showChallenge', [ 'challengeProviderId' => $providerId, + 'redirect_url' => $redirect_url, ] )); } |