FormKey.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\App\PageCache;
  7. use Magento\Framework\Session\SessionManagerInterface;
  8. use Magento\Framework\Stdlib\Cookie\CookieMetadataFactory;
  9. use Magento\Framework\Stdlib\Cookie\PublicCookieMetadata;
  10. use Magento\Framework\Stdlib\CookieManagerInterface;
  11. /**
  12. * Class Version
  13. *
  14. */
  15. class FormKey
  16. {
  17. /**
  18. * Name of cookie that holds private content version
  19. */
  20. const COOKIE_NAME = 'form_key';
  21. /**
  22. * CookieManager
  23. *
  24. * @var CookieManagerInterface
  25. */
  26. private $cookieManager;
  27. /**
  28. * @var CookieMetadataFactory
  29. */
  30. private $cookieMetadataFactory;
  31. /**
  32. * @var SessionManagerInterface
  33. */
  34. private $sessionManager;
  35. /**
  36. * @param CookieManagerInterface $cookieManager
  37. * @param CookieMetadataFactory $cookieMetadataFactory
  38. * @param SessionManagerInterface $sessionManager
  39. */
  40. public function __construct(
  41. CookieManagerInterface $cookieManager,
  42. CookieMetadataFactory $cookieMetadataFactory,
  43. SessionManagerInterface $sessionManager
  44. ) {
  45. $this->cookieManager = $cookieManager;
  46. $this->cookieMetadataFactory = $cookieMetadataFactory;
  47. $this->sessionManager = $sessionManager;
  48. }
  49. /**
  50. * Get form key cookie
  51. *
  52. * @return string
  53. */
  54. public function get()
  55. {
  56. return $this->cookieManager->getCookie(self::COOKIE_NAME);
  57. }
  58. /**
  59. * @param string $value
  60. * @param PublicCookieMetadata $metadata
  61. * @return void
  62. */
  63. public function set($value, PublicCookieMetadata $metadata)
  64. {
  65. $this->cookieManager->setPublicCookie(
  66. self::COOKIE_NAME,
  67. $value,
  68. $metadata
  69. );
  70. }
  71. /**
  72. * @return void
  73. */
  74. public function delete()
  75. {
  76. $this->cookieManager->deleteCookie(
  77. self::COOKIE_NAME,
  78. $this->cookieMetadataFactory
  79. ->createCookieMetadata()
  80. ->setPath($this->sessionManager->getCookiePath())
  81. ->setDomain($this->sessionManager->getCookieDomain())
  82. );
  83. }
  84. }