diff --git a/lib/middleware/AuthenticationMiddleware.php b/lib/middleware/AuthenticationMiddleware.php index 739ce894261ac9838e5daff5cfd9577e3ade7479..f86b06730f0475d82e53927fa25b026735a7b6a0 100644 --- a/lib/middleware/AuthenticationMiddleware.php +++ b/lib/middleware/AuthenticationMiddleware.php @@ -32,7 +32,9 @@ final class AuthenticationMiddleware implements MiddlewareInterface if ($this->auth_manager->start()) { return $handler->handle($request); } else { - $_SESSION['redirect_after_login'] = \Request::url(); + if (!match_route('dispatch.php/start')) { + $_SESSION['redirect_after_login'] = \Request::url(); + } $response = $this->response_factory->createResponse(302); return $response->withHeader('Location', \URLHelper::getURL('dispatch.php/login')); } diff --git a/lib/middleware/SeminarOpenMiddleware.php b/lib/middleware/SeminarOpenMiddleware.php index 108e0edbf3e604a41bb48d5ab03e2e78ac4178d3..20d7f9e1f75c41ae48d248f4e47abce12d5ae54f 100644 --- a/lib/middleware/SeminarOpenMiddleware.php +++ b/lib/middleware/SeminarOpenMiddleware.php @@ -61,6 +61,7 @@ final class SeminarOpenMiddleware implements MiddlewareInterface $jump_page = 'dispatch.php/contents/overview'; break; } + $response = $this->response_factory->createResponse(302); return $response->withHeader('Location', \URLHelper::getURL($jump_page)); } @@ -97,10 +98,7 @@ final class SeminarOpenMiddleware implements MiddlewareInterface // user init starts here if (is_object($user) && $user->id != "nobody") { - if ($_SESSION['SessionStart'] > \UserConfig::get( - $user->id - )->CURRENT_LOGIN_TIMESTAMP - ) { // just logged in + if ($_SESSION['SessionStart'] > \UserConfig::get($user->id)->CURRENT_LOGIN_TIMESTAMP) { // just logged in // store old CURRENT_LOGIN in LAST_LOGIN and set CURRENT_LOGIN to start of session \UserConfig::get($user->id)->store( 'LAST_LOGIN_TIMESTAMP', \UserConfig::get($user->id)->CURRENT_LOGIN_TIMESTAMP @@ -110,10 +108,10 @@ final class SeminarOpenMiddleware implements MiddlewareInterface $current_sem = \Semester::findDefault(); $_SESSION['_default_sem'] = $current_sem->semester_id ?? null; //redirect user to another page if he want to, redirect is deferred to allow plugins to catch the UserDidLogin notification - if (\UserConfig::get($user->id)->PERSONAL_STARTPAGE > 0 && !isset($_SESSION['redirect_after_login']) - && !$perm->have_perm( - "root" - ) + if ( + \UserConfig::get($user->id)->PERSONAL_STARTPAGE > 0 + && !isset($_SESSION['redirect_after_login']) + && !$perm->have_perm('root') ) { $seminar_open_redirected = true; } @@ -247,11 +245,12 @@ final class SeminarOpenMiddleware implements MiddlewareInterface } if ($seminar_open_redirected) { - $this->startpageRedirect(\UserConfig::get($user->id)->PERSONAL_STARTPAGE); + return $this->startpageRedirect(\UserConfig::get($user->id)->PERSONAL_STARTPAGE); } // Show terms on first login - if (is_object($GLOBALS['user']) + if ( + is_object($GLOBALS['user']) && $GLOBALS['user']->needsToAcceptTerms() && !match_route('dispatch.php/terms') && !match_route('dispatch.php/siteinfo/*')