<?php
namespace App\EventSubscriber;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\Security\Core\Security;
use App\Entity\PresenceControleur1;
use App\Entity\Utilisateurs;
class ControllerSubscriber implements EventSubscriberInterface
{
private $em;
private $security;
public function __construct(EntityManagerInterface $em, Security $security)
{
$this->em = $em;
$this->security = $security;
}
public function onKernelController(RequestEvent $event): void
{
$request = $event->getRequest();
if (
!$event->isMainRequest()
|| $request->isXmlHttpRequest()
|| 'login' === $request->attributes->get('_route')
|| 'password_forgot' === $request->attributes->get('_route')
|| 'password_reset' === $request->attributes->get('_route')
|| '_profiler_home' === $request->attributes->get('_route')
) {
return;
}
//dd($request->server->get('HTTP_REFERER'));
//dd($request->attributes->get('_route'));
if($this->security->getUser() != null){
$user = $this->em->getRepository(Utilisateurs::class)->find($this->security->getUser()->getId());
if($user->getDroits()->getId() == 7 || $user->getDroits()->getId() == 24 || $user->getDroits()->getId() == 15 || $user->getDroits()->getId() == 29){
$date = new \DateTime();
$checkPresence = $this->em->getRepository(PresenceControleur1::class)->findOneBy(array(
'datePresence' => $date,
'controleur' => $user->getId()
)
);
if($checkPresence == null){
$newPresence = new PresenceControleur1;
$newPresence->setDatePresence(new \Datetime)
->setControleur($user);
$this->em->persist($newPresence);
$this->em->flush();
}
}
if($user->getLastUri() !== $request->server->get('HTTP_REFERER')
&& strstr($request->server->get('HTTP_REFERER'), '/fichecontrole/') === false
&& strstr($request->server->get('HTTP_REFERER'), '/fichetechnique/') === false
&& strstr($request->server->get('HTTP_REFERER'), 'login') === false
&& strstr($request->server->get('HTTP_REFERER'), '/retouratelier/') === false
&& strstr($request->server->get('HTTP_REFERER'), '/mpseule/') === false
&& strstr($request->server->get('HTTP_REFERER'), '/envoibase/') === false
&& strstr($request->server->get('HTTP_REFERER'), '/demandedev/') === false
&& strstr($request->server->get('HTTP_REFERER'), '/fichelabo/') === false
&& strstr($request->server->get('HTTP_REFERER'), '/fichelabof/') === false
&& strstr($request->server->get('HTTP_REFERER'), '/industrielle/') === false
&& strstr($request->server->get('HTTP_REFERER'), '/ficheindustrielle/') === false
&& strstr($request->server->get('HTTP_REFERER'), '/fichecollectionf/') === false
&& strstr($request->server->get('HTTP_REFERER'), '/fichecollection/') === false
&& strstr($request->server->get('HTTP_REFERER'), '/historique-labos/') === false
&& strstr($request->server->get('HTTP_REFERER'), '/historique-collections/') === false
&& strstr($request->server->get('HTTP_REFERER'), '/historique-li/') === false
){
$user->setLastUri($request->server->get('HTTP_REFERER'));
$this->em->persist($user);
$this->em->flush();
}
}
}
public static function getSubscribedEvents(): array
{
return [
KernelEvents::REQUEST => ['onKernelController', -1000]
];
}
}