src/Voter/DataAdminVoter.php line 8

Open in your IDE?
  1. <?php
  2. namespace App\Voter;
  3. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  4. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  5. use Symfony\Component\Security\Core\User\UserInterface;
  6. class DataAdminVoter extends Voter
  7. {
  8.     const NOTIFICATION_GROUP_LIST "DATA_ADMIN_NOTIFICATION_GROUP_LIST";
  9.     const NOTIFICATION_GROUP_CREATE "DATA_ADMIN_NOTIFICATION_GROUP_CREATE";
  10.     const NOTIFICATION_GROUP_UPDATE "DATA_ADMIN_NOTIFICATION_GROUP_UPDATE";
  11.     const NOTIFICATION_GROUP_REMOVE "DATA_ADMIN_NOTIFICATION_GROUP_REMOVE";
  12.     const NOTIFICATION_RULE_LIST "DATA_ADMIN_NOTIFICATION_RULE_LIST";
  13.     const NOTIFICATION_RULE_CREATE "DATA_ADMIN_NOTIFICATION_RULE_CREATE";
  14.     const NOTIFICATION_RULE_UPDATE "DATA_ADMIN_NOTIFICATION_RULE_UPDATE";
  15.     const NOTIFICATION_RULE_REMOVE "DATA_ADMIN_NOTIFICATION_RULE_REMOVE";
  16.     const REMINDER_LIST "DATA_ADMIN_REMINDER_LIST";
  17.     const REMINDER_CREATE "DATA_ADMIN_REMINDER_CREATE";
  18.     const REMINDER_UPDATE "DATA_ADMIN_REMINDER_UPDATE";
  19.     const CONFIRMATION_DELAY_LIST "DATA_ADMIN_CONFIRMATION_DELAY_LIST";
  20.     const CONFIRMATION_DELAY_CREATE "DATA_ADMIN_CONFIRMATION_DELAY_CREATE";
  21.     const CONFIRMATION_DELAY_UPDATE "DATA_ADMIN_CONFIRMATION_DELAY_UPDATE";
  22.     const CONFIRMATION_DELAY_REMOVE "DATA_ADMIN_CONFIRMATION_DELAY_REMOVE";
  23.     const CONFIRMATION_TYPE_LIST "DATA_ADMIN_CONFIRMATION_TYPE_LIST";
  24.     const CONFIRMATION_TYPE_CREATE "DATA_ADMIN_CONFIRMATION_TYPE_CREATE";
  25.     const CONFIRMATION_TYPE_UPDATE "DATA_ADMIN_CONFIRMATION_TYPE_UPDATE";
  26.     const FULLWEB_MANAGER_LIST "DATA_ADMIN_FULLWEB_MANAGER_LIST";
  27.     const FULLWEB_MANAGER_CREATE "DATA_ADMIN_FULLWEB_MANAGER_CREATE";
  28.     const FULLWEB_MANAGER_UPDATE "DATA_ADMIN_FULLWEB_MANAGER_UPDATE";
  29.     const SALE_SEGMENT_LIST "DATA_ADMIN_SALE_SEGMENT_LIST";
  30.     const SALE_SEGMENT_CREATE "DATA_ADMIN_SALE_SEGMENT_CREATE";
  31.     const SALE_SEGMENT_UPDATE "DATA_ADMIN_SALE_SEGMENT_UPDATE";
  32.     const SALE_SEGMENT_REMOVE "DATA_ADMIN_SALE_SEGMENT_REMOVE";
  33.     protected function supports($attribute$subject): bool
  34.     {
  35.         return in_array($attribute, [
  36.             self::NOTIFICATION_GROUP_LIST,
  37.             self::NOTIFICATION_GROUP_CREATE,
  38.             self::NOTIFICATION_GROUP_UPDATE,
  39.             self::NOTIFICATION_GROUP_REMOVE,
  40.             self::NOTIFICATION_RULE_LIST,
  41.             self::NOTIFICATION_RULE_CREATE,
  42.             self::NOTIFICATION_RULE_UPDATE,
  43.             self::NOTIFICATION_RULE_REMOVE,
  44.             self::REMINDER_LIST,
  45.             self::REMINDER_CREATE,
  46.             self::REMINDER_UPDATE,
  47.             self::CONFIRMATION_DELAY_LIST,
  48.             self::CONFIRMATION_DELAY_CREATE,
  49.             self::CONFIRMATION_DELAY_UPDATE,
  50.             self::CONFIRMATION_DELAY_REMOVE,
  51.             self::CONFIRMATION_TYPE_LIST,
  52.             self::CONFIRMATION_TYPE_CREATE,
  53.             self::CONFIRMATION_TYPE_UPDATE,
  54.             self::FULLWEB_MANAGER_LIST,
  55.             self::FULLWEB_MANAGER_CREATE,
  56.             self::FULLWEB_MANAGER_UPDATE,
  57.             self::SALE_SEGMENT_LIST,
  58.             self::SALE_SEGMENT_CREATE,
  59.             self::SALE_SEGMENT_UPDATE,
  60.             self::SALE_SEGMENT_REMOVE,
  61.         ]);
  62.     }
  63.     protected function voteOnAttribute($attribute$subjectTokenInterface $token): bool
  64.     {
  65.         $loggedUser $token->getUser();
  66.         if (!$loggedUser instanceof UserInterface) {
  67.             return false;
  68.         }
  69.         return in_array($attribute$loggedUser->getRoles());
  70.     }
  71. }