src/EventListener/SuspendedListener.php line 30

Open in your IDE?
  1. <?php
  2. // src/EventListener/RequestListener.php
  3. namespace App\EventListener;
  4. use App\Entity\Users;
  5. use App\Service\ConfigService;
  6. use App\Repository\ParametersRepository;
  7. use Symfony\Component\Security\Core\Security;
  8. use Symfony\Component\HttpKernel\Event\RequestEvent;
  9. use Symfony\Component\HttpFoundation\RedirectResponse;
  10. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  11. use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface;
  12. use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
  13. class SuspendedListener
  14. {
  15.     private $urlGenerator;
  16.     private $security;
  17.     public function __construct(UrlGeneratorInterface $urlGeneratorSecurity $security,
  18.         private FlashBagInterface $flashBag,
  19.         private ParametersRepository $parametersRepository
  20.     )
  21.     {
  22.         $this->urlGenerator $urlGenerator;
  23.         $this->security $security;
  24.     }
  25.     public function onKernelRequest(RequestEvent $event)
  26.     {
  27.         $request $event->getRequest();
  28.      
  29.         $user $this->security->getUser();
  30.         
  31.         if($user && (in_array("ROLE_PLAYER"$user->getRoles()) || in_array("ROLE_ADMIN"$user->getRoles()))){
  32.             return;
  33.         }
  34.         if($this->isAppActive()){
  35.             if(!$this->isInsideTheInaccessiblePath($request->getPathInfo())){
  36.                 return;
  37.             }
  38.     
  39.             $url $this->urlGenerator->generate('app_client_dahsboard');
  40.             if($user && $user->getState() == Users::SUSPENDED ){
  41.                 $this->flashBag->add('error_message'"Vous n'avez pas accès à cette fonctionnalité car votre compte a été suspendu.");
  42.                 $event->setResponse(new RedirectResponse($url));
  43.             }
  44.         }
  45.         else{
  46.             if($this->isInsideTheAccessiblePathAppDesactivated($request->getPathInfo())){
  47.                 return;
  48.             }
  49.             $url $this->urlGenerator->generate('app_client_dahsboard');
  50.             if($user && !in_array("ROLE_ADMIN"$user->getRoles())){
  51.                 $this->flashBag->add('error_message'"Désolé, cette fonctionnalité n'est plus disponible.");
  52.                 $event->setResponse(new RedirectResponse($url));
  53.             }
  54.         }
  55.         
  56.     }
  57.     public function isInsideTheAccessiblePathAppDesactivated($pathInfo){
  58.         $excludePaths = [
  59.             '/auth/connexion',
  60.             '/reset-password',
  61.             '/auth/formulaire_contact',
  62.             '/auth/print_condition_utilisation',
  63.             '/auth/condition-utilisation',
  64.             '/auth/check-existing-user',
  65.             '/otp',
  66.             '/informations',
  67.             '/verification',
  68.             '/wallet',
  69.             '/contrat',
  70.             '/revenue',
  71.             $this->urlGenerator->generate('app_data_protection_infos'),
  72.             $this->urlGenerator->generate('app_client_dahsboard')
  73.         ];
  74.         foreach($excludePaths as $path){
  75.             if(strncmp($pathInfo$pathstrlen($path)) == 0){
  76.                 return true;
  77.             }
  78.         } 
  79.         return false;
  80.     }
  81.     public function isAppActive(){
  82.         $parameter =  $this->parametersRepository->findOneBy(['name' => "AppState"]);
  83.         if(is_null($parameter) || $parameter->getValue() >=1  ){
  84.             return true;
  85.         }
  86.         return false;
  87.     }
  88.     
  89.     public function isInsideTheInaccessiblePath($pathInfo){
  90.         $pathToCheck = ['/boutique/pack-prestation/','/auth/inscription/back-office'];
  91.         foreach($pathToCheck as $path){
  92.             if(strncmp($pathInfo$pathstrlen($path)) == 0){
  93.                 return true;
  94.             }
  95.         } 
  96.         return false;
  97.     }
  98.     
  99. }