Compare commits
2 Commits
b849883fe3
...
5a6bee81cd
Author | SHA1 | Date | |
---|---|---|---|
5a6bee81cd | |||
c790e6af61 |
@ -2,4 +2,8 @@ use opencase:
|
||||
title: 'Use OpenCase'
|
||||
description: 'Use the OpenCase case management system'
|
||||
restrict access: true
|
||||
view opencase add new things menu:
|
||||
title: 'View OpenCase "add new things" menu'
|
||||
description: 'View OpenCase "add new things" menu'
|
||||
restrict access: true
|
||||
|
||||
|
@ -5,12 +5,12 @@ opencase.opencase_admin_menu:
|
||||
opencase.opencase_cases_menu:
|
||||
path: '/'
|
||||
requirements:
|
||||
_permission: 'use opencase'
|
||||
_permission: 'view all published case entities'
|
||||
opencase.opencase_add_new_things_menu:
|
||||
path: '/'
|
||||
requirements:
|
||||
_permission: 'use opencase'
|
||||
_permission: 'view add new things menu'
|
||||
opencase.opencase_reporting_menu:
|
||||
path: '/'
|
||||
requirements:
|
||||
_permission: 'use opencase'
|
||||
_permission: 'view reporting menu'
|
||||
|
@ -6,3 +6,8 @@ services:
|
||||
# Priority determines the order in which Breadcrumb services run.
|
||||
tags:
|
||||
- { name: breadcrumb_builder, priority: 100 }
|
||||
|
||||
opencase.subscriber:
|
||||
class: Drupal\opencase\EventSubscriber\OpencaseSubscriber
|
||||
tags:
|
||||
- { name: event_subscriber }
|
59
src/EventSubscriber/OpencaseSubscriber.php
Normal file
59
src/EventSubscriber/OpencaseSubscriber.php
Normal file
@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
namespace Drupal\opencase\EventSubscriber;
|
||||
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
use Symfony\Component\HttpFoundation\RedirectResponse;
|
||||
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
|
||||
use Symfony\Component\HttpKernel\KernelEvents;
|
||||
use Drupal\Core\Url;
|
||||
|
||||
/**
|
||||
* Class OpencaseSubscriber.
|
||||
*
|
||||
* @package Drupal\opencase\EventSubscriber
|
||||
*/
|
||||
class OpencaseSubscriber implements EventSubscriberInterface {
|
||||
|
||||
private $alternativeHomePage = '/opencase/actors/client';
|
||||
|
||||
/**
|
||||
* Registers the methods in this class that should be listeners.
|
||||
*
|
||||
* @return array
|
||||
* An array of event listener definitions.
|
||||
*/
|
||||
public static function getSubscribedEvents() {
|
||||
$events[KernelEvents::REQUEST][] = ['onRequest'];
|
||||
return $events;
|
||||
}
|
||||
|
||||
/**
|
||||
* Manipulates the request object.
|
||||
*
|
||||
* @param \Symfony\Component\HttpKernel\Event\GetResponseEvent $event
|
||||
* The Event to process.
|
||||
*/
|
||||
public function onRequest(GetResponseEvent $event): void {
|
||||
if ($this->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);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user