AuthorizationLink.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Customer\Block\Account;
  7. use Magento\Customer\Model\Context;
  8. use Magento\Customer\Block\Account\SortLinkInterface;
  9. /**
  10. * Customer authorization link
  11. *
  12. * @api
  13. * @SuppressWarnings(PHPMD.DepthOfInheritance)
  14. * @since 100.0.2
  15. */
  16. class AuthorizationLink extends \Magento\Framework\View\Element\Html\Link implements SortLinkInterface
  17. {
  18. /**
  19. * Customer session
  20. *
  21. * @var \Magento\Framework\App\Http\Context
  22. */
  23. protected $httpContext;
  24. /**
  25. * @var \Magento\Customer\Model\Url
  26. */
  27. protected $_customerUrl;
  28. /**
  29. * @var \Magento\Framework\Data\Helper\PostHelper
  30. */
  31. protected $_postDataHelper;
  32. /**
  33. * @param \Magento\Framework\View\Element\Template\Context $context
  34. * @param \Magento\Framework\App\Http\Context $httpContext
  35. * @param \Magento\Customer\Model\Url $customerUrl
  36. * @param \Magento\Framework\Data\Helper\PostHelper $postDataHelper
  37. * @param array $data
  38. */
  39. public function __construct(
  40. \Magento\Framework\View\Element\Template\Context $context,
  41. \Magento\Framework\App\Http\Context $httpContext,
  42. \Magento\Customer\Model\Url $customerUrl,
  43. \Magento\Framework\Data\Helper\PostHelper $postDataHelper,
  44. array $data = []
  45. ) {
  46. parent::__construct($context, $data);
  47. $this->httpContext = $httpContext;
  48. $this->_customerUrl = $customerUrl;
  49. $this->_postDataHelper = $postDataHelper;
  50. }
  51. /**
  52. * @return string
  53. */
  54. public function getHref()
  55. {
  56. return $this->isLoggedIn()
  57. ? $this->_customerUrl->getLogoutUrl()
  58. : $this->_customerUrl->getLoginUrl();
  59. }
  60. /**
  61. * @return string
  62. */
  63. public function getLabel()
  64. {
  65. return $this->isLoggedIn() ? __('Sign Out') : __('Sign In');
  66. }
  67. /**
  68. * Retrieve params for post request
  69. *
  70. * @return string
  71. */
  72. public function getPostParams()
  73. {
  74. return $this->_postDataHelper->getPostData($this->getHref());
  75. }
  76. /**
  77. * Is logged in
  78. *
  79. * @return bool
  80. */
  81. public function isLoggedIn()
  82. {
  83. return $this->httpContext->getValue(Context::CONTEXT_AUTH);
  84. }
  85. /**
  86. * {@inheritdoc}
  87. * @since 101.0.0
  88. */
  89. public function getSortOrder()
  90. {
  91. return $this->getData(self::SORT_ORDER);
  92. }
  93. }