security = $security; } protected function supports(string $attribute, $subject): bool { if (!$subject instanceof User) { return false; } if (!\in_array($attribute, [self::EDIT, self::DELETE], true)) { return false; } return true; } protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool { $user = $token->getUser(); \assert($user instanceof User); switch ($attribute) { case self::EDIT: return $this->security->isGranted('ROLE_SUPER_ADMIN'); case self::DELETE: if ($user === $subject) { return false; } return $this->security->isGranted('ROLE_SUPER_ADMIN'); } return false; } }