src/Security/AgencyVoter.php line 9

Open in your IDE?
  1. <?php 
  2. namespace App\Security;
  3. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  4. use Symfony\Component\Security\Core\Authorization\AccessDecisionManagerInterface;
  5. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  6. class AgencyVoter extends Voter
  7. {
  8.     const ACCESS 'access';
  9.     /**
  10.      * @var AccessDecisionManagerInterface
  11.      */
  12.     private $decisionManager;
  13.     public function __construct(AccessDecisionManagerInterface $decisionManager)
  14.     {
  15.         $this->decisionManager $decisionManager;
  16.     }
  17.     protected function supports(string $attributemixed $subject): bool
  18.     {
  19.         if (!in_array($attribute, array(self::ACCESS))) {
  20.             return false;
  21.         }
  22.         return true;
  23.     }
  24.     protected function voteOnAttribute(string $attributemixed $subjectTokenInterface $token): bool
  25.     {
  26.         $user $token->getUser();
  27.         $actualAgency $subject;
  28.         switch ($attribute) {
  29.             case self::ACCESS:
  30.                 if ($user->canEditAgency($actualAgency)){
  31.                     return true;
  32.                 }
  33.                 break;
  34.         }
  35.         return false;
  36.     }
  37. }