src/Security/ClientVoter.php line 10

Open in your IDE?
  1. <?php
  2. namespace App\Security;
  3. use App\Entity\Client;
  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 ClientVoter 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 Client;
  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.         return $user->getClient() == $subject;
  28.     }
  29. }