src/Security/Voter/OrderAuthorization.php line 12

Open in your IDE?
  1. <?php
  2. namespace App\Security\Voter;
  3. use App\Entity\Order;
  4. use App\Entity\User;
  5. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  6. use Symfony\Component\Security\Core\Authorization\Voter\VoterInterface;
  7. use Symfony\Bundle\SecurityBundle\Security;
  8. class OrderAuthorization implements VoterInterface
  9. {
  10.     /**
  11.      * @var Security
  12.      */
  13.     private $security;
  14.     public function __construct(Security $security)
  15.     {
  16.         $this->security $security;
  17.     }
  18.     public function vote(TokenInterface $token$subject, array $attributes): int
  19.     {
  20.         if (!$subject instanceof Order) {
  21.             return self::ACCESS_ABSTAIN;
  22.         }
  23.         if (!in_array('OrderAuthorization'$attributes)) {
  24.             return self::ACCESS_ABSTAIN;
  25.         }
  26.         $user $token->getUser();
  27.         if (!$user instanceof User) {
  28.             return self::ACCESS_DENIED;
  29.         }
  30.         if ($user !== $subject->getUser()) {
  31.             return self::ACCESS_DENIED;
  32.         }
  33.         return self::ACCESS_GRANTED;
  34.     }
  35. }