src/Subscriber/AccessDeniedSubscribouz.php line 52

Open in your IDE?
  1. <?php
  2. namespace App\Subscriber;
  3. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\HttpKernel\Event\ExceptionEvent;
  6. use Symfony\Component\HttpKernel\KernelEvents;
  7. use Symfony\Component\Security\Core\Exception\AccessDeniedException;
  8. use Twig\Environment;
  9. use Twig\Error\LoaderError;
  10. use Twig\Error\RuntimeError;
  11. use Twig\Error\SyntaxError;
  12. /**
  13.  * Personalisation du accès denied
  14.  */
  15. class AccessDeniedSubscribouz implements EventSubscriberInterface
  16. {
  17.     /**
  18.      * @var Environment
  19.      */
  20.     private $twig;
  21.     /**
  22.      * @param Environment $twig
  23.      */
  24.     public function __construct(Environment $twig)
  25.     {
  26.         $this->twig $twig;
  27.     }
  28.     /**
  29.      * @return array[]
  30.      */
  31.     public static function getSubscribedEvents(): array
  32.     {
  33.         return [
  34.             KernelEvents::EXCEPTION => ['onKernelException'2],
  35.         ];
  36.     }
  37.     /**
  38.      * @param ExceptionEvent $event
  39.      *
  40.      * @return void
  41.      * @throws LoaderError
  42.      * @throws RuntimeError
  43.      * @throws SyntaxError
  44.      */
  45.     public function onKernelException(ExceptionEvent $event): void
  46.     {
  47.         $exception $event->getThrowable();
  48.         if (!$exception instanceof AccessDeniedException) {
  49.             return;
  50.         }
  51.         return;
  52.         $event->stopPropagation();
  53.         $content  $this->twig->render('security/access-denied.html.twig');
  54.         $response = new Response($content403);
  55.         $event->setResponse($response);
  56.     }
  57. }