bundles/BackofficeBundle/Security/Authorization/Voter/SellerVoter.php line 12

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Bdm\BackofficeBundle\Security\Authorization\Voter;
  4. use Bdm\BackofficeBundle\Entity\Merchant;
  5. use Bdm\CheckoutBundle\Entity\Seller;
  6. use Bdm\OAuth2Bundle\Entity\User;
  7. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  8. class SellerVoter extends AbstractVoter
  9. {
  10. /**
  11. * @param string $sAttribute attribute
  12. * @param mixed $oSubject subject
  13. * @return bool
  14. */
  15. #[\Override]
  16. public function supports($sAttribute, $oSubject)
  17. {
  18. return $oSubject instanceof Seller && parent::supports($sAttribute, $oSubject);
  19. }
  20. /**
  21. * @param string $sAttr attr
  22. * @param mixed $mEntity entity
  23. * @param TokenInterface $oToken token
  24. *
  25. * @return bool
  26. */
  27. protected function voteOnAttribute($sAttr, $mEntity, TokenInterface $oToken)
  28. {
  29. $oUser = $oToken->getUser();
  30. if (!$oUser) {
  31. $oUser = $this->oMerchantProvider->getUser();
  32. }
  33. if (!$oUser instanceof Merchant) {
  34. return false;
  35. }
  36. if ($oUser->getId() == $mEntity->getApplication()->getMerchant()->getId()) {
  37. return true;
  38. }
  39. return false;
  40. }
  41. }