diff --git a/src/EventSubscriber/OpencaseSubscriber.php b/src/EventSubscriber/OpencaseSubscriber.php new file mode 100644 index 0000000..7881b4f --- /dev/null +++ b/src/EventSubscriber/OpencaseSubscriber.php @@ -0,0 +1,59 @@ +requestIsForHomePage($event) && $this->currentUserShouldBeDirectedToAlternativeHomePage()){ + $this->redirectToAlternativeHomePage($event); + } + } + + private function requestIsForHomePage($event):bool { + return $event->getRequest()->getRequestUri() == '/'; + } + + private function currentUserShouldBeDirectedToAlternativeHomePage():bool { + return $this->currentUserCanSeeAllCases(); + } + private function currentUserCanSeeAllCases():bool { + return \Drupal::currentUser()->hasPermission('view all published case entities'); + } + + private function redirectToAlternativeHomePage(GetResponseEvent $event):void { + $redirect_target_url = Url::fromUserInput($this->alternativeHomePage); + $response = new RedirectResponse($redirect_target_url->setAbsolute()->toString()); + $event->setResponse($response); + } +} \ No newline at end of file