src/EventListener/ActivityListerner.php line 28

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use Carbon\Carbon;
  4. use App\Entity\AdminActivity;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Symfony\Component\HttpKernel\HttpKernel;
  7. use Symfony\Component\Security\Core\Security;
  8. use Symfony\Component\HttpKernel\Event\ControllerEvent;
  9. use Symfony\Component\DependencyInjection\ContainerInterface;
  10. use Symfony\Component\HttpFoundation\RequestStack;
  11. class ActivityListerner {
  12.     private $em;
  13.     private $security;
  14.     private $container;
  15.     private $requestStack;
  16.     public function __construct(EntityManagerInterface $emSecurity $securityContainerInterface $containerRequestStack $requestStack) {
  17.         $this->em $em;
  18.         $this->security $security;
  19.         $this->container $container;
  20.         $this->requestStack $requestStack;
  21.     }
  22.     public function onTerminate(ControllerEvent $event) {
  23.         // Check that the current request is a "MASTER_REQUEST"
  24.         // Ignore any sub-request
  25.         if ($event->getRequestType() !== HttpKernel::MASTER_REQUEST) {
  26.             return;
  27.         }
  28.         // Check token authentication availability
  29.         if ($this->security->getToken()) {
  30.             $user $this->security->getToken()->getUser();
  31.             if($user instanceof \App\Entity\Admin){
  32.                 $request $event->getRequest();
  33.                 $ipAuthorize explode(','$user->getIpList());
  34.                 if(!in_array($request->getClientIp(), $ipAuthorize) && !$user->getAllIp() ){
  35.                     printf("Votre adresse IP n'est pas dans la liste des adresses IP Autorisées");
  36.                     die();
  37.                 }
  38.                 $user_activity = new AdminActivity();
  39.                 $user_activity->setAdmin($user);
  40.                 $user_activity->setCreateAt(new \Datetime());
  41.                 $user_activity->setIp($request->getClientIp());
  42.                 $user_activity->setMethod($request->getMethod());
  43.                 $currentUrl $request->headers->get('host').$this->requestStack->getCurrentRequest()->getRequestUri();
  44.                 $user_activity->setLien($currentUrl);
  45.                 $this->em->persist($user_activity);
  46.                 $this->em->flush();
  47.             } 
  48.         }
  49.     }
  50. }