src/Security/AbonnementVoter.php line 9

Open in your IDE?
  1. <?php
  2. // src/Security/AbonnementVoter.php
  3. namespace App\Security;
  4. use App\Entity\User;
  5. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  6. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  7. class AbonnementVoter extends Voter
  8. {
  9.     protected function supports(string $attribute$subject): bool
  10.     {
  11.         // On utilise un attribut custom "ACCESS_ADMIN"
  12.         return $attribute === 'ACCESS_ADMIN';
  13.     }
  14.     protected function voteOnAttribute(string $attribute$subjectTokenInterface $token): bool
  15.     {
  16.         $user $token->getUser();
  17.         if (!$user instanceof User) {
  18.             return false;
  19.         }
  20.         // Vérifie rôle et abonnement
  21.         return in_array('ROLE_ADMIN'$user->getRoles(), true)
  22.             && $user->isOkAbonnement();
  23.     }
  24. }