resolver = $resolver; $this->entityManager = $entityManager; } final protected function voteOnAttribute($attribute, $subject, TokenInterface $token) { $user = $token->getUser(); //An allowed user is not allowed to do anything... if ($user instanceof User && $user->isDisabled()) { return false; } // if the user is anonymous, we use the anonymous user. if (! $user instanceof User) { $repo = $this->entityManager->getRepository(User::class); $user = $repo->getAnonymousUser(); if (null === $user) { return false; } } return $this->voteOnUser($attribute, $subject, $user); } /** * Similar to voteOnAttribute, but checking for the anonymous user is already done. * The current user (or the anonymous user) is passed by $user. * * @param string $attribute * @param mixed $subject * @return bool */ abstract protected function voteOnUser($attribute, $subject, User $user): bool; }