UpdateCustomerCookiesObserver.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Persistent\Observer;
  7. use Magento\Framework\Event\ObserverInterface;
  8. /**
  9. * Class UpdateCustomerCookies
  10. */
  11. class UpdateCustomerCookiesObserver implements ObserverInterface
  12. {
  13. /**
  14. * Persistent session
  15. *
  16. * @var \Magento\Persistent\Helper\Session
  17. */
  18. protected $_persistentSession;
  19. /**
  20. * Customer repository
  21. *
  22. * @var \Magento\Customer\Api\CustomerRepositoryInterface
  23. */
  24. protected $customerRepository;
  25. /**
  26. * Constructor
  27. *
  28. * @param \Magento\Persistent\Helper\Session $persistentSession
  29. * @param \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository
  30. */
  31. public function __construct(
  32. \Magento\Persistent\Helper\Session $persistentSession,
  33. \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository
  34. ) {
  35. $this->_persistentSession = $persistentSession;
  36. $this->customerRepository = $customerRepository;
  37. }
  38. /**
  39. * Update customer id and customer group id if user is in persistent session
  40. *
  41. * @param \Magento\Framework\Event\Observer $observer
  42. * @return void
  43. */
  44. public function execute(\Magento\Framework\Event\Observer $observer)
  45. {
  46. if (!$this->_persistentSession->isPersistent()) {
  47. return;
  48. }
  49. $customerCookies = $observer->getEvent()->getCustomerCookies();
  50. if ($customerCookies instanceof \Magento\Framework\DataObject) {
  51. $persistentCustomer = $this->customerRepository->getById(
  52. $this->_persistentSession->getSession()->getCustomerId()
  53. );
  54. $customerCookies->setCustomerId($persistentCustomer->getId());
  55. $customerCookies->setCustomerGroupId($persistentCustomer->getGroupId());
  56. }
  57. }
  58. }