src/Security/GroupVoter.php line 10

Open in your IDE?
  1. <?php
  2. namespace App\Security;
  3. use App\Entity\Group;
  4. use App\Entity\Security\AppUser;
  5. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  6. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  7. class GroupVoter extends Voter
  8. {
  9.     public const VIEW 'view';
  10.     protected function supports(string $attribute$subject): bool
  11.     {
  12.         if (!in_array($attribute, [self::VIEW])) {
  13.             return false;
  14.         }
  15.         return $subject instanceof Group;
  16.     }
  17.     protected function voteOnAttribute(string $attribute$subjectTokenInterface $token): bool
  18.     {
  19.         if (!in_array($attribute, [self::VIEW])) {
  20.             return false;
  21.         }
  22.         $user $token->getUser();
  23.         // the user must be logged in; if not, deny access
  24.         if (!$user instanceof AppUser) {
  25.             return false;
  26.         }
  27.         $groups $user->getClient()->getGroups();
  28.         return $groups->contains($subject);
  29.     }
  30. }