src/Security/Authorization/Voter/AdminVoter.php line 14

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  * User: maxime
  5.  * Date: 17/03/14
  6.  * Time: 16:47.
  7.  */
  8. namespace App\Security\Authorization\Voter;
  9. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  10. use Symfony\Component\Security\Core\Authorization\Voter\VoterInterface;
  11. class AdminVoter implements VoterInterface
  12. {
  13.     /**
  14.      * Checks if the voter supports the given attribute.
  15.      *
  16.      * @param string $attribute An attribute
  17.      *
  18.      * @return bool true if this Voter supports the attribute, false otherwise
  19.      */
  20.     public function supportsAttribute($attribute)
  21.     {
  22.         return true;
  23.     }
  24.     /**
  25.      * Checks if the voter supports the given class.
  26.      *
  27.      * @param string $class A class name
  28.      *
  29.      * @return bool true if this Voter can process the class
  30.      */
  31.     public function supportsClass($class)
  32.     {
  33.         return true;
  34.     }
  35.     /**
  36.      * Returns the vote for the given parameters.
  37.      *
  38.      * This method must return one of the following constants:
  39.      * ACCESS_GRANTED, ACCESS_DENIED, or ACCESS_ABSTAIN.
  40.      *
  41.      * @param TokenInterface $token A TokenInterface instance
  42.      * @param object $object The object to secure
  43.      * @param array $attributes An array of attributes associated with the method being invoked
  44.      *
  45.      * @return int either ACCESS_GRANTED, ACCESS_ABSTAIN, or ACCESS_DENIED
  46.      */
  47.     public function vote(TokenInterface $token$object, array $attributes)
  48.     {
  49.         foreach ($token->getRoleNames() as $role) {
  50.             if ($role === 'ROLE_ADMIN') {
  51.                 return VoterInterface::ACCESS_GRANTED;
  52.             }
  53.         }
  54.         return VoterInterface::ACCESS_ABSTAIN;
  55.     }
  56. }