| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- <?php
- /**
- *
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- declare(strict_types=1);
- namespace Magento\PageCache\Plugin;
- use Magento\Framework\App\PageCache\FormKey as CacheFormKey;
- use Magento\Framework\Escaper;
- use Magento\Framework\Data\Form\FormKey;
- use Magento\Framework\Stdlib\Cookie\CookieMetadataFactory;
- use Magento\Framework\Session\Config\ConfigInterface;
- /**
- * Allow for registration of a form key through cookies.
- */
- class RegisterFormKeyFromCookie
- {
- /**
- * @var CacheFormKey
- */
- private $cookieFormKey;
- /**
- * @var Escaper
- */
- private $escaper;
- /**
- * @var FormKey
- */
- private $formKey;
- /**
- * @var CookieMetadataFactory
- */
- private $cookieMetadataFactory;
- /**
- * @var ConfigInterface
- */
- private $sessionConfig;
- /**
- * @param CacheFormKey $formKey
- * @param Escaper $escaper
- * @param FormKey $formKey
- * @param CookieMetadataFactory $cookieMetadataFactory
- * @param ConfigInterface $sessionConfig
- */
- public function __construct(
- CacheFormKey $cacheFormKey,
- Escaper $escaper,
- FormKey $formKey,
- CookieMetadataFactory $cookieMetadataFactory,
- ConfigInterface $sessionConfig
- ) {
- $this->cookieFormKey = $cacheFormKey;
- $this->escaper = $escaper;
- $this->formKey = $formKey;
- $this->cookieMetadataFactory = $cookieMetadataFactory;
- $this->sessionConfig = $sessionConfig;
- }
- /**
- * Set form key from the cookie.
- *
- * @return void
- *
- * @SuppressWarnings(PHPMD.UnusedFormalParameter)
- */
- public function beforeDispatch(): void
- {
- if ($this->cookieFormKey->get()) {
- $this->updateCookieFormKey($this->cookieFormKey->get());
- $this->formKey->set(
- $this->escaper->escapeHtml($this->cookieFormKey->get())
- );
- }
- }
- /**
- * @param string $formKey
- * @return void
- */
- private function updateCookieFormKey(string $formKey): void
- {
- $cookieMetadata = $this->cookieMetadataFactory
- ->createPublicCookieMetadata();
- $cookieMetadata->setDomain($this->sessionConfig->getCookieDomain());
- $cookieMetadata->setPath($this->sessionConfig->getCookiePath());
- $lifetime = $this->sessionConfig->getCookieLifetime();
- if ($lifetime !== 0) {
- $cookieMetadata->setDuration($lifetime);
- }
- $this->cookieFormKey->set(
- $formKey,
- $cookieMetadata
- );
- }
- }
|