src/Voters/VendorVoter.php line 12

Open in your IDE?
  1. <?php
  2. namespace App\Voters;
  3. use App\Entity\Users\Vendor;
  4. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  5. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  6. use Symfony\Component\Security\Core\Security;
  7. class VendorVoter extends Voter
  8. {
  9.     private $security;
  10.     public function __construct(Security $security)
  11.     {
  12.         $this->security $security;
  13.     }
  14.     /**
  15.      * Determines if the attribute and subject are supported by this voter.
  16.      *
  17.      * @param string $attribute An attribute
  18.      * @param mixed $subject The subject to secure, e.g. an object the user wants to access or any other PHP type
  19.      *
  20.      * @return bool True if the attribute and subject are supported, false otherwise
  21.      */
  22.     protected function supports(string $attribute$subject)
  23.     {
  24.         if (!== strpos($attribute'EA_')) {
  25.             return false;
  26.         }
  27.             if($subject->getInstance()){
  28.                 if( $subject->getInstance() instanceof Vendor){
  29.                     return true;
  30.                 }
  31.             }
  32.         // TODO: Implement supports() method.
  33.     }
  34.     /**
  35.      * Perform a single access check operation on a given attribute, subject and token.
  36.      * It is safe to assume that $attribute and $subject already passed the "supports()" method check.
  37.      *
  38.      * @param mixed $subject
  39.      *
  40.      * @return bool
  41.      */
  42.     protected function voteOnAttribute(string $attribute$subjectTokenInterface $token)
  43.     {
  44.         $user $token->getUser();
  45.         if ($this->security->isGranted('ROLE_ADMIN') || $this->security->isGranted('ROLE_SUPERVISOR') ||  $this->security->isGranted('ROLE_REPRESENTATIVE') ||  $this->security->isGranted('ROLE_LABOADMIN') ) {
  46.            // if($user->getLaboratory() == )
  47.             // check if vendor has access to the page
  48.             $vendor $subject->getInstance();
  49.             return true;
  50.         }
  51.         throw new \LogicException('This code should not be reached!');
  52.         // TODO: Implement voteOnAttribute() method.
  53.     }
  54. }