src/Security/Voter/Front/PageVoter.php line 9

Open in your IDE?
  1. <?php
  2. namespace App\Security\Voter\Front;
  3. use Stimactiv\CmsBundle\Entity\Page;
  4. use Stimactiv\CoreBundle\Entity\BaseUser;
  5. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  6. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  7. class PageVoter extends Voter
  8. {
  9.     public const IS_READABLE 'front.page.is_readable';
  10.     protected function supports(string $attribute$subject)
  11.     {
  12.         return in_array($attribute, [
  13.             self::IS_READABLE,
  14.         ]);
  15.     }
  16.     protected function voteOnAttribute(string $attribute$subjectTokenInterface $token): bool
  17.     {
  18.         if (!$subject instanceof Page) {
  19.             return false;
  20.         }
  21.         switch ($attribute) {
  22.             case self::IS_READABLE:
  23.                 if ($token->getUser() instanceof BaseUser) {
  24.                     return true;
  25.                 }
  26.                 return $subject->getVisibility() === Page::__P_VISIBILITY_1_// Publique
  27.         }
  28.         return false;
  29.     }
  30. }