<?php
namespace App\EventListener;
use Doctrine\ORM\EntityManager;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Security;
use App\Entity\User;
class BeforeRequestListener
{
private $em;
private $token;
private $security;
public function __construct(EntityManager $em,TokenStorageInterface $token,Security $security )
{
$this->em = $em;
$this->token = $token;
$this->security = $security;
}
public function onKernelRequest(RequestEvent $event)
{
if($this->token->getToken() === null) {
return;
}
/** @var User $user */
$user = $this->token->getToken()->getUser();
if(!$user->hasRole('ROLE_ADMIN')) {
$processus_ids_array= [];
foreach($user->getProcessuses() as $processus) {
$processus_ids_array[]=$processus->getId();
}
$processus_ids = implode(', ', $processus_ids_array);
$filter = $this->em
->getFilters()
->enable('processus_filter');
$filter->setParameter('ids', $processus_ids);
}
}
}