src/Security/Voter/InvestorVoter.php line 10

Open in your IDE?
  1. <?php
  2. namespace App\Security\Voter;
  3. use App\Entity\Shareregister;
  4. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  5. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  6. use Symfony\Component\Security\Core\User\UserInterface;
  7. class InvestorVoter extends Voter
  8. {
  9.     protected function supports($attribute$subject)
  10.     {
  11.         return in_array($attribute, ['PUB_ACCESS'])
  12.             && $subject instanceof \App\Entity\Pub;
  13.     }
  14.     protected function voteOnAttribute($attribute$subjectTokenInterface $token)
  15.     {
  16.         $user $token->getUser();
  17.         if (!$user instanceof UserInterface) {
  18.             return false;
  19.         }
  20.         if(in_array('ROLE_SUPER_ADMIN'$user->getRoles())) {
  21.             return true;
  22.         }
  23.         switch ($attribute) {
  24.             case 'PUB_ACCESS':
  25.                /** @var Shareregister $share */
  26.                 foreach ($user->getShares() as $share) {
  27.                     if($share->getPub()->getId() == $subject->getId()) {
  28.                         return true;
  29.                     }
  30.                 }
  31.                 return false;
  32.                 break;
  33.         }
  34.         return false;
  35.     }
  36. }