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

Open in your IDE?
  1. <?php
  2. namespace Crea\ParameterBundle\Voter;
  3. use Crea\ParameterBundle\Entity\ParameterType;
  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 ParameterTypeVoter extends Voter
  8. {
  9.     const CREATE "PARAMETER_TYPE_CREATE";
  10.     const UPDATE "PARAMETER_TYPE_UPDATE";
  11.     const UPDATE_CODE "PARAMETER_TYPE_UPDATE_CODE";
  12.     const REMOVE "PARAMETER_TYPE_REMOVE";
  13.     /**
  14.      * @inheritDoc
  15.      */
  16.     protected function supports($attribute$subject): bool
  17.     {
  18.         return in_array($attribute, [
  19.                 self::CREATE,
  20.                 self::UPDATE,
  21.                 self::UPDATE_CODE,
  22.                 self::REMOVE,
  23.             ]) && ($subject === null || $subject instanceof ParameterType);
  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::CREATE:
  37.                 return $this->voteOnCreate($loggedUser);
  38.             case self::UPDATE:
  39.                 return $this->voteOnUpdate($subject$loggedUser);
  40.             case self::UPDATE_CODE:
  41.                 return $this->voteOnUpdateCode($subject$loggedUser);
  42.             case self::REMOVE:
  43.                 return $this->voteOnRemove($subject$loggedUser);
  44.         }
  45.         return false;
  46.     }
  47.     private function voteOnCreate(UserInterface $loggedUser): bool
  48.     {
  49.         return in_array(self::CREATE$loggedUser->getRoles());
  50.     }
  51.     private function voteOnUpdate(?ParameterType $subjectUserInterface $loggedUser): bool
  52.     {
  53.         if (null === $subject) {
  54.             return false;
  55.         }
  56.         return in_array(self::UPDATE$loggedUser->getRoles());
  57.     }
  58.     private function voteOnUpdateCode(?ParameterType $subjectUserInterface $loggedUser): bool
  59.     {
  60.         if (null === $subject) {
  61.             return false;
  62.         }
  63.         return in_array(self::UPDATE_CODE$loggedUser->getRoles());
  64.     }
  65.     private function voteOnRemove(?ParameterType $subjectUserInterface $loggedUser): bool
  66.     {
  67.         if (null === $subject) {
  68.             return false;
  69.         }
  70.         return in_array(self::REMOVE$loggedUser->getRoles());
  71.     }
  72. }