diff --git a/app/controllers/course/go.php b/app/controllers/course/go.php index 400c44a4c84e34ebb7df72e3241fdf280bf15bad..83569133b0c391e5228f848ef318336bb86c8222 100644 --- a/app/controllers/course/go.php +++ b/app/controllers/course/go.php @@ -46,13 +46,16 @@ class Course_GoController extends AuthenticatedController // gibt es eine Anweisung zur Umleitung? $redirect_to = Request::get('redirect_to'); - if ($redirect_to) { + if ( + $redirect_to + && !( + str_starts_with($redirect_to, '#') + || str_starts_with($redirect_to, '?') + ) + ) { if (!is_internal_url($redirect_to)) { throw new Exception('Invalid redirection'); } - if (str_starts_with($redirect_to, '#')) { - $redirect_to = 'dispatch.php/course/go' . $redirect_to; - } $this->redirect(URLHelper::getURL($redirect_to, ['cid' => $course_id])); return; } @@ -62,7 +65,7 @@ class Course_GoController extends AuthenticatedController if (Navigation::hasItem("/course")) { foreach (Navigation::getItem("/course")->getSubNavigation() as $index => $navigation) { if ($index !== 'admin') { - $this->redirect(URLHelper::getURL($navigation->getURL())); + $this->redirect(URLHelper::getURL($navigation->getURL() . $redirect_to)); return; } }