<?php
-namespace Drupal\permissions_by_term;
+namespace Drupal\permissions_by_term\Listener;
+use Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher;
+use Drupal\permissions_by_term\Event\PermissionsByTermDeniedEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
+use Drupal\permissions_by_term\Service\AccessCheck;
+use Drupal\permissions_by_term\Service\Term;
/**
* Class KernelEventListener.
class KernelEventListener implements EventSubscriberInterface
{
+ /**
+ * @var AccessCheck
+ */
+ private $accessCheckService;
+
+ /**
+ * @var Term
+ */
+ private $term;
+
+ /**
+ * @var ContainerAwareEventDispatcher
+ */
+ private $eventDispatcher;
+
/**
* Instantiating of objects on class construction.
*/
public function __construct()
{
$this->accessCheckService = \Drupal::service('permissions_by_term.access_check');
- $this->accessStorageService = \Drupal::service('permissions_by_term.access_storage');
+ $this->term = \Drupal::service('permissions_by_term.term');
+ $this->eventDispatcher = \Drupal::service('event_dispatcher');
}
/**
if ($this->canRequestGetNode($event->getRequest())) {
$nid = $event->getRequest()->attributes->get('node')->get('nid')->getValue()['0']['value'];
if (!$this->accessCheckService->canUserAccessByNodeId($nid)) {
+ $accessDeniedEvent = new PermissionsByTermDeniedEvent($nid);
+ $this->eventDispatcher->dispatch(PermissionsByTermDeniedEvent::NAME, $accessDeniedEvent);
+
$this->sendUserToAccessDeniedPage();
}
}
$query_string = $event->getRequest()->get('q');
$query_string = trim($query_string);
- $tid = $this->accessStorageService->getTermIdByName($query_string);
+ $tid = $this->term->getTermIdByName($query_string);
if (!$this->accessCheckService->isAccessAllowedByDatabase($tid)) {
$this->sendUserToAccessDeniedPage();
}
$suggested_terms = json_decode($json_suggested_terms);
$allowed_terms = [];
foreach ($suggested_terms as $term) {
- $tid = $this->accessStorageService->getTermIdByName($term->label);
+ $tid = $this->term->getTermIdByName($term->label);
if ($this->accessCheckService->isAccessAllowedByDatabase($tid)) {
$allowed_terms[] = [
'value' => $term->value,