From 36384db076378c180adfcdde20edf2c3760416c2 Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Fri, 21 Mar 2014 15:59:20 +0100 Subject: [PATCH] make method supportsClass() in custom voter compatible with the interface's documentation --- cookbook/security/voters_data_permission.rst | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/cookbook/security/voters_data_permission.rst b/cookbook/security/voters_data_permission.rst index 0e5055261e1..6646f4e8928 100644 --- a/cookbook/security/voters_data_permission.rst +++ b/cookbook/security/voters_data_permission.rst @@ -64,7 +64,6 @@ edit a particular object. Here's an example implementation:: use Symfony\Component\Security\Core\Authorization\Voter\VoterInterface; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\User\UserInterface; - use Acme\DemoBundle\Entity\Post; class PostVoter implements VoterInterface { @@ -79,9 +78,11 @@ edit a particular object. Here's an example implementation:: )); } - public function supportsClass($obj) + public function supportsClass($class) { - return $obj instanceof Post; + $supportedClass = 'Acme\DemoBundle\Entity\Post'; + + return $supportedClass === $class || is_subclass_of($class, $supportedClass); } /** @@ -90,7 +91,7 @@ edit a particular object. Here's an example implementation:: public function vote(TokenInterface $token, $post, array $attributes) { // check if class of this object is supported by this voter - if (!$this->supportsClass($post)) { + if (!$this->supportsClass(get_class($post))) { return VoterInterface::ACCESS_ABSTAIN; }