src/Security/Authorization/Voter/JobVoter.php line 8

Open in your IDE?
  1. <?php
  2. namespace App\Security\Authorization\Voter;
  3.  
  4. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  5. use Symfony\Component\Security\Core\Authorization\Voter\VoterInterface;
  6.  
  7. class JobVoter implements VoterInterface
  8. {
  9.     const VIEW 'VIEW';
  10.     const EDIT 'EDIT';
  11.     const DELETE 'DELETE';
  12.     const CREATE 'CREATE';
  13.     const LIST = 'LIST';
  14.     const RERUN 'RERUN';
  15.  
  16.     public function supportsAttribute($attribute)
  17.     {
  18.  
  19.         return in_array($attribute, array(
  20.             self::VIEW,
  21.             self::EDIT,
  22.             self::DELETE,
  23.             self::CREATE,
  24.             self::LIST,
  25.             self::RERUN,
  26.         ));
  27.     }
  28.  
  29.     public function supportsClass($class)
  30.     {
  31.  
  32.         $supportedClass 'App\Entity\Job';
  33.  
  34.         if (is_string($class)) {
  35.             if ($class === $supportedClass) {
  36.                 return true;
  37.             } else {
  38.                 return false;
  39.             }
  40.         }
  41.         if(is_null($class)) {
  42.             return true;
  43.         }
  44.         return $supportedClass === get_class($class) || is_subclass_of(get_class($class), $supportedClass);
  45.     }
  46.  
  47.  
  48.     public function vote(TokenInterface $token$entity, array $attributes)
  49.     {
  50.         $user $token->getUser();
  51.         if (!is_object($user)) {
  52.             return VoterInterface::ACCESS_DENIED;
  53.         }
  54.  
  55.         if (!$this->supportsClass($entity)) {
  56.             return VoterInterface::ACCESS_ABSTAIN;
  57.         }
  58.         
  59.         $attribute $attributes[0];
  60.         if(is_array($attribute)) {
  61.             $attribute $attribute[0];
  62.         };
  63.         if($user->hasRole("SuperUsers")) {
  64.             return VoterInterface::ACCESS_GRANTED;
  65.         }
  66.         switch($attribute) {
  67.             case self::LIST:
  68.                 return VoterInterface::ACCESS_GRANTED;
  69.                 break;
  70.             case self::VIEW:
  71.                 return VoterInterface::ACCESS_GRANTED;
  72.                 break;
  73.             case self::CREATE:
  74.                 return VoterInterface::ACCESS_GRANTED;
  75.                 break;
  76.             case self::EDIT:
  77.                 if($user->hasRole("SuperUsers")) {
  78.                     return VoterInterface::ACCESS_GRANTED;
  79.                 } else {
  80.                     return VoterInterface::ACCESS_DENIED;
  81.                 }
  82.                 break;
  83.             case self::DELETE:
  84.                 if($user->hasRole("SuperUsers")) {
  85.                     return VoterInterface::ACCESS_GRANTED;
  86.                 } else {
  87.                     return VoterInterface::ACCESS_DENIED;
  88.                 }
  89.                 break;
  90.             case self::RERUN:
  91.                 if($user->hasRole("SuperUsers")) {
  92.                     return VoterInterface::ACCESS_GRANTED;
  93.                 } else {
  94.                     return VoterInterface::ACCESS_DENIED;
  95.                 }
  96.                 break;
  97.         }
  98.  
  99.         return VoterInterface::ACCESS_DENIED;
  100.     }
  101. }