src/Security/Voter/AccountFirmCollaborateurVoter.php line 10

Open in your IDE?
  1. <?php
  2. namespace App\Security\Voter;
  3. use App\Entity\User;
  4. use Symfony\Component\Security\Core\User\UserInterface;
  5. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  6. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  7. class AccountFirmCollaborateurVoter extends Voter
  8. {
  9.     private const ALLOWED_ATTRIBUTES = [
  10.             // Ma plateforme de com'
  11.             'ACCESS_EMAILING',
  12.             'ACCESS_SMS',
  13.             'ACCESS_SURVEY',
  14.             'ACCESS_EVENT',
  15.             'ACCESS_SPONSORSHIP',
  16.             'ACCESS_RECOMMENDATION',
  17.             'ACCESS_SATISFACTION',
  18.             'ACCESS_BIRTHDAY_CLIENT',
  19.             'ACCESS_QRCODE',
  20.             'ACCESS_SHORT_URL',
  21.             'ACCESS_VIDEO_TUTORIAL',
  22.             // Identité Visuelle
  23.             'ACCESS_LOGOS',
  24.             'ACCESS_LETTERHEADS',
  25.             'ACCESS_MAIL_SIGNATURE',
  26.             'ACCESS_TAMPON',
  27.             'ACCESS_SOCIAUX_MEDIA',
  28.             'ACCESS_PRINT',
  29.             // Mon Site Internet
  30.             'ACCESS_STATISTICS',
  31.             'ACCESS_NEWSLETTERS',
  32.             'ACCESS_OPPORTUNITIES',
  33.             'ACCESS_CONTACT',
  34.             'ACCESS_CONTACT_PROFESSION',
  35.             'ACCESS_CONTACT_CALLBACK',
  36.             'ACCESS_CONTACT_CUSTOM',
  37.             'ACCESS_SCROLLING_NEWS',
  38.             'ACCESS_USEFUL_LINKS',
  39.             'ACCESS_BLOG',
  40.             'ACCESS_PARTNERS',
  41.             'ACCESS_EBOOK',
  42.             'ACCESS_INVOICE',
  43.     ];
  44.     protected function supports(string $attribute$subject): bool
  45.     {
  46.         return in_array($attributeself::ALLOWED_ATTRIBUTEStrue);
  47.     }
  48.     protected function voteOnAttribute(string $attributemixed $moduleNameTokenInterface $token): bool
  49.     {
  50.         $user $token->getUser();
  51.         if (!$user instanceof User) {
  52.             return false;
  53.         }
  54.         $userRoles $user->getRoles();
  55.         if (in_array('ROLE_ADMIN'$userRolestrue) || in_array('ROLE_ADMIN_FIRM'$userRolestrue) || in_array('ROLE_FIRM_PARTNER'$userRolestrue)) {
  56.             return true;
  57.         }
  58.         return in_array($attribute$userRolestrue);
  59.     }
  60. }