src/Security/Voter/DocumentVoter.php line 10

Open in your IDE?
  1. <?php
  2. namespace App\Security\Voter;
  3. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  4. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  5. use Symfony\Component\Security\Core\Security;
  6. use Symfony\Component\Security\Core\User\UserInterface;
  7. class DocumentVoter extends Voter
  8. {
  9.     public const LIST = 'list';
  10.     public const ADD 'add';
  11.     private $security;
  12.     public function __construct(Security $security)
  13.     {
  14.         $this->security $security;
  15.     }
  16.     protected function supports($attribute$subject): bool
  17.     {
  18.         return 'docPlus' === $subject && \in_array($attribute, [
  19.                 self::LIST,
  20.                 self::ADD,
  21.             ], true);
  22.     }
  23.     protected function voteOnAttribute($attribute$subjectTokenInterface $token)
  24.     {
  25.         // Utilisateur doit être authentifié
  26.         if (!$token->getUser() instanceof UserInterface) {
  27.             return false;
  28.         }
  29.         switch ($attribute) {
  30.             case self::LIST:
  31.             case self::ADD:
  32.             return $this->security->isGranted('ROLE_RESPONSABLE_ETABLISSEMENT') ||
  33.                 $this->security->isGranted('ROLE_COMMUNICATION') ||
  34.                 $this->security->isGranted('ROLE_GESTIONNAIRE_ESPACE_ETABLISSEMENT');
  35.         }
  36.         return false;
  37.     }
  38. }