diff --git a/Security/Authorization/ActivityVoter.php b/Security/Authorization/ActivityVoter.php index b4d0feb2f..79b5b8202 100644 --- a/Security/Authorization/ActivityVoter.php +++ b/Security/Authorization/ActivityVoter.php @@ -19,12 +19,16 @@ namespace Chill\ActivityBundle\Security\Authorization; +use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; + use Chill\MainBundle\Security\Authorization\AbstractChillVoter; use Chill\MainBundle\Security\Authorization\AuthorizationHelper; use Chill\MainBundle\Security\ProvideRoleHierarchyInterface; +use Chill\MainBundle\Entity\User; +use Chill\ActivityBundle\Entity\Activity; /** - * + * * * @author Julien Fastré */ @@ -35,39 +39,40 @@ class ActivityVoter extends AbstractChillVoter implements ProvideRoleHierarchyIn const SEE_DETAILS = 'CHILL_ACTIVITY_SEE_DETAILS'; const UPDATE = 'CHILL_ACTIVITY_UPDATE'; const DELETE = 'CHILL_ACTIVITY_DELETE'; - + /** * * @var AuthorizationHelper */ protected $helper; - + public function __construct(AuthorizationHelper $helper) { $this->helper = $helper; } - - protected function getSupportedAttributes() - { - return array(self::CREATE, self::SEE, self::UPDATE, self::DELETE, - self::SEE_DETAILS); - } - protected function getSupportedClasses() - { - return array('Chill\ActivityBundle\Entity\Activity'); - } - protected function isGranted($attribute, $report, $user = null) + protected function supports($attribute, $subject) { - if (! $user instanceof \Chill\MainBundle\Entity\User){ - + if ($subject instanceof Activity) { + return \in_array($attribute, [ + self::CREATE, self::SEE, self::UPDATE, self::DELETE, + self::SEE_DETAILS + ]); + } else { return false; } - - return $this->helper->userHasAccess($user, $report, $attribute); } + protected function voteOnAttribute($attribute, $subject, TokenInterface $token) + { + if (!$token->getUser() instanceof User) { + return false; + } + return $this->helper->userHasAccess($token->getUser(), $subject, $attribute); + } + + public function getRoles() { return $this->getSupportedAttributes(); @@ -77,8 +82,8 @@ class ActivityVoter extends AbstractChillVoter implements ProvideRoleHierarchyIn { return array(); } - - + + public function getRolesWithHierarchy() { return [ 'Activity' => $this->getRoles() ];