diff --git a/typo3/sysext/felogin/Classes/Controller/LoginController.php b/typo3/sysext/felogin/Classes/Controller/LoginController.php index f3bb4368d348a36d3b7bccf17b4394cec6a33d5f..dc35fd4cf9595f7702d4eff4a2dee5f2fdc47b74 100644 --- a/typo3/sysext/felogin/Classes/Controller/LoginController.php +++ b/typo3/sysext/felogin/Classes/Controller/LoginController.php @@ -63,6 +63,11 @@ class LoginController extends AbstractLoginFormController */ protected $loginType = ''; + /** + * @var string + */ + protected $redirectUrl = ''; + /** * @var ServerRequestHandler */ @@ -120,15 +125,11 @@ class LoginController extends AbstractLoginFormController return; } - $redirectUrl = $this->redirectHandler->processRedirect( + $this->redirectUrl = $this->redirectHandler->processRedirect( $this->loginType, $this->configuration, $this->request->hasArgument('redirectReferrer') ? $this->request->getArgument('redirectReferrer') : '' ); - if ($redirectUrl !== '') { - $this->eventDispatcher->dispatch(new BeforeRedirectEvent($this->loginType, $redirectUrl)); - $this->redirectToUri($redirectUrl); - } } } @@ -144,6 +145,7 @@ class LoginController extends AbstractLoginFormController } $this->handleLoginForwards(); + $this->handleRedirect(); $this->eventDispatcher->dispatch(new ModifyLoginFormViewEvent($this->view)); @@ -174,6 +176,7 @@ class LoginController extends AbstractLoginFormController } $this->eventDispatcher->dispatch(new LoginConfirmedEvent($this, $this->view)); + $this->handleRedirect(); $this->view->assignMultiple( [ @@ -190,6 +193,8 @@ class LoginController extends AbstractLoginFormController */ public function logoutAction(int $redirectPageLogout = 0): void { + $this->handleRedirect(); + $this->view->assignMultiple( [ 'cookieWarning' => $this->showCookieWarning, @@ -201,6 +206,17 @@ class LoginController extends AbstractLoginFormController ); } + /** + * Handles the redirect when $this->redirectUrl is not empty + */ + protected function handleRedirect(): void + { + if ($this->redirectUrl !== '') { + $this->eventDispatcher->dispatch(new BeforeRedirectEvent($this->loginType, $this->redirectUrl)); + $this->redirectToUri($this->redirectUrl); + } + } + /** * Handle forwards to overview and logout actions from login action */