vendor/crea/parameter-bundle/src/Voter/ParameterGroupVoter.php line 10

Open in your IDE?
  1. <?php
  2. namespace Crea\ParameterBundle\Voter;
  3. use Crea\ParameterBundle\Entity\ParameterGroup;
  4. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  5. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  6. use Symfony\Component\Security\Core\User\UserInterface;
  7. class ParameterGroupVoter extends Voter
  8. {
  9.     const LIST = "PARAMETER_GROUP_LIST";
  10.     const CREATE "PARAMETER_GROUP_CREATE";
  11.     const UPDATE "PARAMETER_GROUP_UPDATE";
  12.     const REMOVE "PARAMETER_GROUP_REMOVE";
  13.     /**
  14.      * @inheritDoc
  15.      */
  16.     protected function supports($attribute$subject): bool
  17.     {
  18.         return in_array($attribute, [
  19.                 self::LIST,
  20.                 self::CREATE,
  21.                 self::UPDATE,
  22.                 self::REMOVE,
  23.             ]) && ($subject === null || $subject instanceof ParameterGroup);
  24.     }
  25.     /**
  26.      * @inheritDoc
  27.      */
  28.     protected function voteOnAttribute($attribute$subjectTokenInterface $token): bool
  29.     {
  30.         /** @var UserInterface $loggedUser */
  31.         $loggedUser $token->getUser();
  32.         if (!$loggedUser instanceof UserInterface) {
  33.             return false;
  34.         }
  35.         switch ($attribute) {
  36.             case self::LIST:
  37.                 return $this->voteOnList($loggedUser);
  38.             case self::CREATE:
  39.                 return $this->voteOnCreate($loggedUser);
  40.             case self::UPDATE:
  41.                 return $this->voteOnUpdate($subject$loggedUser);
  42.             case self::REMOVE:
  43.                 return $this->voteOnRemove($subject$loggedUser);
  44.         }
  45.         return false;
  46.     }
  47.     private function voteOnList(UserInterface $loggedUser): bool
  48.     {
  49.         return in_array(self::LIST, $loggedUser->getRoles());
  50.     }
  51.     private function voteOnCreate(UserInterface $loggedUser): bool
  52.     {
  53.         return in_array(self::CREATE$loggedUser->getRoles());
  54.     }
  55.     private function voteOnUpdate(?ParameterGroup $subjectUserInterface $loggedUser): bool
  56.     {
  57.         if (null === $subject) {
  58.             return false;
  59.         }
  60.         return in_array(self::UPDATE$loggedUser->getRoles());
  61.     }
  62.     private function voteOnRemove(?ParameterGroup $subjectUserInterface $loggedUser): bool
  63.     {
  64.         if (null === $subject) {
  65.             return false;
  66.         }
  67.         return in_array(self::REMOVE$loggedUser->getRoles());
  68.     }
  69. }