<?php
// src/EventSubscriber/RequestSubscriber.php
namespace App\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\ControllerEvent;
use Symfony\Component\Security\Core\Security;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
class CustomUserSubscriber implements EventSubscriberInterface
{
protected $security;
public function __construct(Security $security, EntityManagerInterface $entityManager, UrlGeneratorInterface $urlGenerator)
{
$this->security = $security;
$this->entityManager = $entityManager;
$this->urlGenerator = $urlGenerator;
}
public function onKernelController(ControllerEvent $event)
{
$user = $this->security->getUser();
$route = $event->getRequest()->attributes->get('_route');
if($event->getRequest()->attributes->get('route')!=null){
$route = $event->getRequest()->attributes->get('route');
}
// Check if policies have been accepted
// TO DO - check if can move this to RequestSubscriber
if ($user && $route!='user_policies' && $route!='partner_questionnaire' && $route!='notifications_shownotification' && $route!='app_login' && $route!=null
&& (!$user->getacceptedPolicies() || !$user->getAcceptedCookies() || !$user->getAcceptedTerms())) {
throw new AccessDeniedHttpException();
}
}
public static function getSubscribedEvents()
{
return array(
'kernel.controller' => 'onKernelController',
);
}
}