<?php
/**
* Created by PhpStorm.
* User: maxime
* Date: 17/03/14
* Time: 16:47.
*/
namespace App\Security\Authorization\Voter;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Core\Authorization\Voter\VoterInterface;
class AdminVoter implements VoterInterface
{
/**
* Checks if the voter supports the given attribute.
*
* @param string $attribute An attribute
*
* @return bool true if this Voter supports the attribute, false otherwise
*/
public function supportsAttribute($attribute)
{
return true;
}
/**
* Checks if the voter supports the given class.
*
* @param string $class A class name
*
* @return bool true if this Voter can process the class
*/
public function supportsClass($class)
{
return true;
}
/**
* Returns the vote for the given parameters.
*
* This method must return one of the following constants:
* ACCESS_GRANTED, ACCESS_DENIED, or ACCESS_ABSTAIN.
*
* @param TokenInterface $token A TokenInterface instance
* @param object $object The object to secure
* @param array $attributes An array of attributes associated with the method being invoked
*
* @return int either ACCESS_GRANTED, ACCESS_ABSTAIN, or ACCESS_DENIED
*/
public function vote(TokenInterface $token, $object, array $attributes)
{
foreach ($token->getRoleNames() as $role) {
if ($role === 'ROLE_ADMIN') {
return VoterInterface::ACCESS_GRANTED;
}
}
return VoterInterface::ACCESS_ABSTAIN;
}
}