NoCookiesObserver.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Cms\Observer;
  7. use Magento\Framework\Event\ObserverInterface;
  8. class NoCookiesObserver implements ObserverInterface
  9. {
  10. /**
  11. * Cms page
  12. *
  13. * @var \Magento\Cms\Helper\Page
  14. */
  15. protected $_cmsPage;
  16. /**
  17. * Core store config
  18. *
  19. * @var \Magento\Framework\App\Config\ScopeConfigInterface
  20. */
  21. protected $_scopeConfig;
  22. /**
  23. * @param \Magento\Cms\Helper\Page $cmsPage
  24. * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
  25. */
  26. public function __construct(
  27. \Magento\Cms\Helper\Page $cmsPage,
  28. \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
  29. ) {
  30. $this->_cmsPage = $cmsPage;
  31. $this->_scopeConfig = $scopeConfig;
  32. }
  33. /**
  34. * Modify no Cookies forward object
  35. *
  36. * @param \Magento\Framework\Event\Observer $observer
  37. * @return self
  38. */
  39. public function execute(\Magento\Framework\Event\Observer $observer)
  40. {
  41. $redirect = $observer->getEvent()->getRedirect();
  42. $pageId = $this->_scopeConfig->getValue(
  43. \Magento\Cms\Helper\Page::XML_PATH_NO_COOKIES_PAGE,
  44. \Magento\Store\Model\ScopeInterface::SCOPE_STORE
  45. );
  46. $pageUrl = $this->_cmsPage->getPageUrl($pageId);
  47. if ($pageUrl) {
  48. $redirect->setRedirectUrl($pageUrl);
  49. } else {
  50. $redirect->setRedirect(true)->setPath('cookie/index/noCookies')->setArguments([]);
  51. }
  52. return $this;
  53. }
  54. }