src/Security/UserPageAccessSubscriber.php line 68

Open in your IDE?
  1. <?php
  2. namespace App\Security;
  3. use App\Entity\UserAccess;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Symfony\Component\HttpFoundation\RedirectResponse;
  7. use Symfony\Component\HttpKernel\Event\RequestEvent;
  8. use Symfony\Component\Security\Core\Security;
  9. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  10. class UserPageAccessSubscriber implements EventSubscriberInterface
  11. {
  12.     private $security;
  13.     private $entityManager;
  14.     private $urlGenerator;
  15.     public function __construct(Security $securityEntityManagerInterface $entityManagerUrlGeneratorInterface $urlGenerator)
  16.     {
  17.         $this->security $security;
  18.         $this->entityManager $entityManager;
  19.         $this->urlGenerator $urlGenerator;
  20.     }
  21. //    public function onKernelRequest(RequestEvent $event)
  22. //    {
  23. //        $request = $event->getRequest();
  24. //        $user = $this->security->getUser();
  25. //        $route = $request->attributes->get('_route');
  26. //        $permissions = $this->entityManager->getRepository(UserAccess::class)->findOneBy(['user' => $user]);
  27. //
  28. //        if ($permissions && !$this->security->isGranted('ROLE_ADMIN') && $route != 'app_login') {
  29. //            $permissionsActions = $permissions->getPermission();
  30. //
  31. //            if (!in_array($route, $permissionsActions)) {
  32. //                $url = $this->urlGenerator->generate('app_404page');
  33. //                $response = new RedirectResponse($url);
  34. //                $event->setResponse($response);
  35. //            }
  36. //        }
  37. //    }
  38. //    public function onKernelRequest(RequestEvent $event)
  39. //    {
  40. //        $request = $event->getRequest();
  41. //        $user = $this->security->getUser();
  42. //        $route = $request->attributes->get('_route');
  43. //
  44. //        if ($route === 'app_404page') {
  45. //            return; // Évitez de rediriger encore vers la page 404
  46. //        }
  47. //
  48. //        $permissions = $this->entityManager->getRepository(UserAccess::class)->findOneBy(['user' => $user]);
  49. //
  50. //        if ($permissions && !$this->security->isGranted('ROLE_ADMIN') && $route != 'app_login') {
  51. //            $permissionsActions = $permissions->getPermission();
  52. //
  53. //            if (!in_array($route, $permissionsActions)) {
  54. //                $response = new RedirectResponse($this->urlGenerator->generate('app_404page'));
  55. //                $event->setResponse($response);
  56. //            }
  57. //        }
  58. //    }
  59.     public function onKernelRequest(RequestEvent $event)
  60.     {
  61.         $request $event->getRequest();
  62.         $user $this->security->getUser();
  63.         $route $request->attributes->get('_route');
  64. //        if ($route === 'app_404page') {
  65. //            return; // Évitez de rediriger encore vers la page 404
  66. //        }
  67. //
  68. //        $permissions = $this->entityManager->getRepository(UserAccess::class)->findOneBy(['user' => $user]);
  69. //
  70. //        if ($permissions && !$this->security->isGranted('ROLE_ADMIN') && $route != 'app_login') {
  71. //            $permissionsActions = $permissions->getPermission();
  72. //
  73. //            if (!in_array($route, $permissionsActions)) {
  74. //                $response = new RedirectResponse($this->urlGenerator->generate('app_404page'));
  75. //                $event->setResponse($response);
  76. //            }
  77. //        }
  78.     }
  79.     public static function getSubscribedEvents()
  80.     {
  81.         return [
  82.             RequestEvent::class => 'onKernelRequest',
  83.         ];
  84.     }
  85. }