RestrictAdminBillingAgreementUsageObserver.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. /**
  3. *
  4. * Copyright © Magento, Inc. All rights reserved.
  5. * See COPYING.txt for license details.
  6. */
  7. namespace Magento\Paypal\Observer;
  8. use Magento\Framework\Event\ObserverInterface;
  9. use Magento\Framework\Event\Observer as EventObserver;
  10. class RestrictAdminBillingAgreementUsageObserver implements ObserverInterface
  11. {
  12. /**
  13. * @var \Magento\Framework\AuthorizationInterface
  14. */
  15. protected $_authorization;
  16. /**
  17. * @param \Magento\Framework\AuthorizationInterface $authorization
  18. */
  19. public function __construct(
  20. \Magento\Framework\AuthorizationInterface $authorization
  21. ) {
  22. $this->_authorization = $authorization;
  23. }
  24. /**
  25. * Block admin ability to use customer billing agreements
  26. *
  27. * @param EventObserver $observer
  28. * @return void
  29. */
  30. public function execute(EventObserver $observer)
  31. {
  32. $event = $observer->getEvent();
  33. $methodInstance = $event->getMethodInstance();
  34. if ($methodInstance instanceof \Magento\Paypal\Model\Payment\Method\Billing\AbstractAgreement &&
  35. false == $this->_authorization->isAllowed(
  36. 'Magento_Paypal::use'
  37. )
  38. ) {
  39. /** @var \Magento\Framework\DataObject $result */
  40. $result = $observer->getEvent()->getResult();
  41. $result->setData('is_available', false);
  42. }
  43. }
  44. }