src/Security/Voter/ModuleVoter.php line 9

Open in your IDE?
  1. <?php
  2. namespace App\Security\Voter;
  3. use App\Entity\User;
  4. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  5. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  6. class ModuleVoter extends Voter
  7. {
  8.     protected function supports(string $attribute$subject): bool
  9.     {
  10.         return in_array($attribute, [
  11.             'NEWSLETTER',
  12.             'ANNOUNCEMENT',
  13.             'PRIMARY_NEWS',
  14.             'EBOOK',
  15.             'USEFUL_LINK',
  16.             'NEWS',
  17.             'TOOLS',
  18.             'ACCOUNTING_NEWS',
  19.             'PARTNERS',
  20.             'ACTU_RS',
  21.             'SIMULATEUR',
  22.             'CONTACT',
  23.             'CONTACT_PROFESSION',
  24.             'CONTACT_ETRE_RAPPELE',
  25.             'CONTACT_CUSTOM',
  26.             'NEW_NEWSLETTER',
  27.             'NEW_COMPANY',
  28.             'INVOICES',
  29.             'ANIMATION',
  30.             'DIAPORAMA',
  31.             'MODULE_VIDEO'
  32.         ]);
  33.     }
  34.     protected function voteOnAttribute(string $attribute$subjectTokenInterface $token): bool
  35.     {
  36.         $user $token->getUser();
  37.         // if the user is anonymous, do not grant access
  38.         if (!$user instanceof User) {
  39.             return false;
  40.         }
  41.         $modules $user->getAccountingFirm() ? $user->getAccountingFirm()->getParameters()->getModules() : array();
  42.         switch ($attribute) {
  43.             case 'NEWSLETTER':
  44.                 return array_key_exists('Newsletter'$modules) && true === $modules['Newsletter'];
  45.             case 'PRIMARY_NEWS':
  46.                 return array_key_exists('Actualite_a_la_une'$modules) && true === $modules['Actualite_a_la_une'];
  47.             case 'NEWS':
  48.                 return array_key_exists('Actualites'$modules) && true === $modules['Actualites'];
  49.             case 'ANNOUNCEMENT':
  50.                 return array_key_exists('Annonces'$modules) && true === $modules['Annonces'];
  51.             case 'USEFUL_LINK':
  52.                 return array_key_exists('Liens_utils'$modules) && true === $modules['Liens_utils'];
  53.             case 'EBOOK':
  54.                 return array_key_exists('Livre_blanc'$modules) && true === $modules['Livre_blanc'];
  55.             case 'TOOLS':
  56.                 return array_key_exists('Tools'$modules) && true === $modules['Tools'];
  57.             case 'ACCOUNTING_NEWS':
  58.                 return array_key_exists('Actualite_du_mois'$modules) && true === $modules['Actualite_du_mois'];
  59.             case 'PARTNERS':
  60.                 return array_key_exists('Partners'$modules) && true === $modules['Partners'];
  61.             case 'ACTU_RS':
  62.                 return array_key_exists('Actu_rs'$modules) && true === $modules['Actu_rs'];
  63.             case 'SIMULATEUR':
  64.                 return array_key_exists('Simulateur'$modules) && true === $modules['Simulateur'];
  65.             case 'CONTACT':
  66.                 return array_key_exists('Contact'$modules) && true === $modules['Contact'];
  67.             case 'CONTACT_PROFESSION':
  68.                 return array_key_exists('Contact_profession'$modules) && true === $modules['Contact_profession'];
  69.             case 'CONTACT_ETRE_RAPPELE':
  70.                 return array_key_exists('Contact_etreRappele'$modules) && true === $modules['Contact_etreRappele'];
  71.             case 'CONTACT_CUSTOM':
  72.                 return array_key_exists('Contact_custom'$modules) && true === $modules['Contact_custom'];
  73.             case 'NEW_NEWSLETTER':
  74.                 return array_key_exists('Inscription_newsletter'$modules) && true === $modules['Inscription_newsletter'];
  75.             case 'NEW_COMPANY':
  76.                 return array_key_exists('Creation_entreprise'$modules) && true === $modules['Creation_entreprise'];
  77.             case 'INVOICES':
  78.                 return ($user->getAccountingFirm() && $user->getAccountingFirm()->getIdsellsy() !== null) ? true false;
  79.             case 'ANIMATION':
  80.                 return array_key_exists('Animation'$modules) && true === $modules['Animation'];
  81.             case 'DIAPORAMA':
  82.                 return array_key_exists('Diaporama'$modules) && true === $modules['Diaporama'];
  83.             case 'MODULE_VIDEO':
  84.                 return array_key_exists('Module_video'$modules) && true === $modules['Module_video'];
  85.         }
  86.         return false;
  87.     }
  88. }