src/Listener/ClosedSiteListener.php line 48

Open in your IDE?
  1. <?php
  2.     /******************************************************************************
  3.      * Copyright (c) Echo-numeric 2020-2023.                                      *
  4.      ******************************************************************************/
  5.     namespace App\Listener;
  6.     use App\Entity\Setting;
  7.     use App\Entity\User;
  8.     use DateTime;
  9.     use Doctrine\ORM\EntityManagerInterface;
  10.     use Exception;
  11.     use Symfony\Component\HttpFoundation\RedirectResponse;
  12.     use Symfony\Component\HttpFoundation\RequestStack;
  13.     use Symfony\Component\HttpKernel\Event\ResponseEvent;
  14.     use Symfony\Component\Routing\RouterInterface;
  15.     use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  16.     class ClosedSiteListener
  17.     {
  18.         private EntityManagerInterface $em;
  19.         private RouterInterface        $router;
  20.         private TokenStorageInterface  $token;
  21.         private RequestStack $requestStack;
  22.         /**
  23.          * @param EntityManagerInterface $em
  24.          * @param RouterInterface        $router
  25.          * @param TokenStorageInterface  $token
  26.          * @param RequestStack  $requestStack
  27.          */
  28.         public function __constructEntityManagerInterface $emRouterInterface $routerTokenStorageInterface $tokenRequestStack $requestStack)
  29.         {
  30.             $this->em     $em;
  31.             $this->router $router;
  32.             $this->token  $token;
  33.             $this->requestStack $requestStack;
  34.         }
  35.         /**
  36.          * @param ResponseEvent $event
  37.          *
  38.          * @return void
  39.          * @throws Exception
  40.          */
  41.         public function onKernelResponseResponseEvent $event )
  42.         {
  43.             $request $event->getRequest();
  44.             $token $this->token->getToken();
  45.             if ( is_null$token ) ) {
  46.                 return;
  47.             }
  48.             /** @var User $user */
  49.             $user $this->token->getToken()->getUser();
  50. //
  51.             $request $event->getRequest();
  52.             if ( in_array(
  53.                 $request->get'_route' ),
  54.                 [
  55.                     'static_file_folder',
  56.                     'static_project_file',
  57.                     'front_common_css_custom',
  58.                     'global_common_platform_version',
  59.                     'closed_platform',
  60.                     'app_login',
  61.                 ]
  62.             ) ) {
  63.                 return;
  64.             }
  65. //            if ($user->getId() === 6579) {
  66. //                $this->requestStack->getMainRequest()->getSession()->getFlashBag()->add(
  67. //                    'danger', 'Le site est fermé, seul les développeurs y on accès'
  68. //                );
  69. //                return;
  70. //            }
  71. //            $event->setResponse(
  72. //                new RedirectResponse(
  73. //                    $this->router->generate( 'closed_platform' )
  74. //                )
  75. //            );
  76. //            $closedSite          = $this->em->getRepository( Setting::class )->findOneBy( [ 'name' => 'CLOSE_SITE', 'value' => '1' ] );
  77. //            $valueDateClosedSite = $this->em->getRepository( Setting::class )->findOneBy( [ 'name' => 'CLOSE_SITE_DATEFROM' ] );
  78. //            $now                 = new DateTime( 'now' );
  79. //            if ( !is_null( $valueDateClosedSite->getValue() ) && $this->isValidDateFormat( $valueDateClosedSite->getValue() ) ) {
  80. //                $dateClosedSite = DateTime::createFromFormat( 'Y-m-d H:i:s', $valueDateClosedSite->getValue() );
  81. //
  82. //                if ( $closedSite && $now > $dateClosedSite ) {
  83. //                    if ($user->isDeveloper()) {
  84. //                        $this->requestStack->getMainRequest()->getSession()->getFlashBag()->add(
  85. //                            'danger', 'Le site est fermé, seul les développeurs y on accès'
  86. //                        );
  87. //                        return;
  88. //                    }
  89. //                    $event->setResponse(
  90. //                        new RedirectResponse(
  91. //                            $this->router->generate( 'closed_platform' )
  92. //                        )
  93. //                    );
  94. //                }
  95. //            }
  96.         }
  97.         /**
  98.          * @param string $dateString
  99.          *
  100.          * @return bool
  101.          */
  102.         public function isValidDateFormatstring $dateString ): bool
  103.         {
  104.             $pattern '/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/';
  105.             return preg_match$pattern$dateString ) === 1;
  106.         }
  107.     }