src/Security/Voter/ClientWebsiteModuleVoter.php line 20

Open in your IDE?
  1. <?php
  2. namespace App\Security\Voter;
  3. use App\Entity\AccountingFirm;
  4. use App\Services\AccountingFirmResolver;
  5. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  6. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  7. class ClientWebsiteModuleVoter extends Voter
  8. {
  9.     protected $accountingFirm;
  10.     protected $templateBase;
  11.     public function __construct(
  12.         private AccountingFirmResolver $accountingFirmResolver
  13.     ) {
  14.         // Utilisation du resolver centralisé - évite la duplication des requêtes
  15.         $this->accountingFirm $this->accountingFirmResolver->resolve();
  16.     }
  17.     protected function supports(string $attribute$subject): bool
  18.     {
  19.         return in_array($attribute, [
  20.             'WEBSITE_NEWSLETTER',
  21.             'WEBSITE_ANNOUNCEMENT',
  22.             'WEBSITE_PRIMARY_NEWS',
  23.             'WEBSITE_EBOOK',
  24.             'WEBSITE_USEFUL_LINK',
  25.             'WEBSITE_NEWS',
  26.             'WEBSITE_TOOLS',
  27.             'WEBSITE_ACCOUNTING_NEWS',
  28.             'WEBSITE_PARTNERS',
  29.             'WEBSITE_ACTU_RS',
  30.             'WEBSITE_SIMULATEUR',
  31.             'WEBSITE_CONTACT',
  32.             'WEBSITE_CONTACT_CUSTOM',
  33.             'WEBSITE_CONTACT_ETRE_RAPPELE',
  34.             'WEBSITE_NEW_NEWSLETTER',
  35.             'WEBSITE_NEW_COMPANY',
  36.             'WEBSITE_INVOICES',
  37.             'WEBSITE_ANIMATION',
  38.             'WEBSITE_DIAPORAMA',
  39.             'WEBSITE_MODULE_VIDEO',
  40.         ]);
  41.     }
  42.     protected function voteOnAttribute(string $attribute$subjectTokenInterface $token): bool
  43.     {
  44.         if (!$this->accountingFirm instanceof AccountingFirm) {
  45.             return false;
  46.         }
  47.         $modules $this->accountingFirm->getParameters()->getModules();
  48.         /*if ($this->accountingFirm->getActuv2Widgeturl() && $this->accountingFirm->getActuv2Token()) {
  49.             return true;
  50.         } else {
  51.             return false;
  52.         }*/
  53.         switch ($attribute) {
  54.             case 'WEBSITE_NEWSLETTER':
  55.                 return array_key_exists('Newsletter'$modules) && true === $modules['Newsletter'];
  56.             case 'WEBSITE_PRIMARY_NEWS':
  57.                 return array_key_exists('Actualite_a_la_une'$modules) && true === $modules['Actualite_a_la_une'];
  58.             case 'WEBSITE_NEWS':
  59.                 return array_key_exists('Actualites'$modules) && true === $modules['Actualites'];
  60.             case 'WEBSITE_ANNOUNCEMENT':
  61.                 return array_key_exists('Annonces'$modules) && true === $modules['Annonces'];
  62.             case 'WEBSITE_USEFUL_LINK':
  63.                 return array_key_exists('Liens_utils'$modules) && true === $modules['Liens_utils'];
  64.             case 'WEBSITE_EBOOK':
  65.                 return array_key_exists('Livre_blanc'$modules) && true === $modules['Livre_blanc'];
  66.             case 'WEBSITE_TOOLS':
  67.                 return array_key_exists('Tools'$modules) && true === $modules['Tools'];
  68.             case 'WEBSITE_ACCOUNTING_NEWS':
  69.                 return array_key_exists('Actualite_du_mois'$modules) && true === $modules['Actualite_du_mois'];
  70.             case 'WEBSITE_PARTNERS':
  71.                 return array_key_exists('Partners'$modules) && true === $modules['Partners'];
  72.             case 'WEBSITE_ACTU_RS':
  73.                 return array_key_exists('Actu_rs'$modules) && true === $modules['Actu_rs'];
  74.             case 'WEBSITE_SIMULATEUR':
  75.                 return array_key_exists('Simulateur'$modules) && true === $modules['Simulateur'];
  76.             case 'WEBSITE_CONTACT':
  77.                 return array_key_exists('Contact'$modules) && true === $modules['Contact'];
  78.             case 'WEBSITE_CONTACT_PROFESSION':
  79.                 return array_key_exists('Contact_profession'$modules) && true === $modules['Contact_profession'];
  80.             case 'WEBSITE_CONTACT_ETRE_RAPPELE':
  81.                 return array_key_exists('Contact_etreRappele'$modules) && true === $modules['Contact_etreRappele'];
  82.             case 'WEBSITE_CONTACT_CUSTOM':
  83.                 return array_key_exists('Contact_custom'$modules) && true === $modules['Contact_custom'];
  84.             case 'WEBSITE_NEW_NEWSLETTER':
  85.                 return array_key_exists('Inscription_newsletter'$modules) && true === $modules['Inscription_newsletter'];
  86.             case 'WEBSITE_NEW_COMPANY':
  87.                 return array_key_exists('Creation_entreprise'$modules) && true === $modules['Creation_entreprise'];
  88.             case 'WEBSITE_INVOICES':
  89.                 return $this->accountingFirm->getIdsellsy() !== null true false;
  90.             case 'WEBSITE_ANIMATION':
  91.                 return array_key_exists('Animation'$modules) && true === $modules['Animation'];
  92.             case 'WEBSITE_DIAPORAMA':
  93.                 return array_key_exists('Diaporama'$modules) && true === $modules['Diaporama'];
  94.             case 'WEBSITE_MODULE_VIDEO':
  95.                 return array_key_exists('Module_video'$modules) && true === $modules['Module_video'];
  96.         }
  97.         return false;
  98.     }
  99. }