src/AppBundle/SfExtend/AdminVoter.php line 9

Open in your IDE?
  1. <?php
  2. namespace AppBundle\SfExtend;
  3. use Biz\User\CurrentUser;
  4. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  5. use Symfony\Component\Security\Core\Authorization\Voter\VoterInterface;
  6. class AdminVoter implements VoterInterface
  7. {
  8.     public const ADMIN 'ROLE_ADMIN';
  9.     public const BACKEND 'ROLE_BACKEND';
  10.     public function supportsAttribute($attribute)
  11.     {
  12.         return self::ADMIN === $attribute || self::BACKEND === $attribute;
  13.     }
  14.     public function supportsClass($class)
  15.     {
  16.         // TODO: Implement supportsClass() method.
  17.     }
  18.     public function vote(TokenInterface $token$object, array $attributes)
  19.     {
  20.         foreach ($attributes as $attribute) {
  21.             if (!$this->supportsAttribute($attribute)) {
  22.                 return self::ACCESS_ABSTAIN;
  23.             }
  24.         }
  25.         $user $token->getUser();
  26.         if (empty($user) || !$user instanceof CurrentUser) {
  27.             return self::ACCESS_DENIED;
  28.         }
  29.         if ($token->getUser()->isAdmin()) {
  30.             return self::ACCESS_GRANTED;
  31.         } else {
  32.             return self::ACCESS_DENIED;
  33.         }
  34.     }
  35. }