123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- <?php
- /**
- *
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Customer\Controller\Account;
- use Magento\Customer\Model\Url;
- use Magento\Framework\App\Action\Context;
- use Magento\Customer\Model\Session;
- use Magento\Framework\App\Config\ScopeConfigInterface;
- use Magento\Store\Model\StoreManagerInterface;
- use Magento\Customer\Api\AccountManagementInterface;
- use Magento\Customer\Api\CustomerRepositoryInterface;
- use Magento\Customer\Helper\Address;
- use Magento\Framework\UrlFactory;
- use Magento\Framework\Exception\StateException;
- use Magento\Store\Model\ScopeInterface;
- use Magento\Framework\Controller\ResultFactory;
- /**
- * Class Confirm
- *
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- */
- class Confirm extends \Magento\Customer\Controller\AbstractAccount
- {
- /**
- * @var \Magento\Framework\App\Config\ScopeConfigInterface
- */
- protected $scopeConfig;
- /**
- * @var \Magento\Store\Model\StoreManagerInterface
- */
- protected $storeManager;
- /**
- * @var \Magento\Customer\Api\AccountManagementInterface
- */
- protected $customerAccountManagement;
- /**
- * @var \Magento\Customer\Api\CustomerRepositoryInterface
- */
- protected $customerRepository;
- /**
- * @var \Magento\Customer\Helper\Address
- */
- protected $addressHelper;
- /**
- * @var \Magento\Framework\UrlInterface
- */
- protected $urlModel;
- /**
- * @var Session
- */
- protected $session;
- /**
- * @var \Magento\Framework\Stdlib\Cookie\CookieMetadataFactory
- */
- private $cookieMetadataFactory;
- /**
- * @var \Magento\Framework\Stdlib\Cookie\PhpCookieManager
- */
- private $cookieMetadataManager;
- /**
- * @param Context $context
- * @param Session $customerSession
- * @param ScopeConfigInterface $scopeConfig
- * @param StoreManagerInterface $storeManager
- * @param AccountManagementInterface $customerAccountManagement
- * @param CustomerRepositoryInterface $customerRepository
- * @param Address $addressHelper
- * @param UrlFactory $urlFactory
- */
- public function __construct(
- Context $context,
- Session $customerSession,
- ScopeConfigInterface $scopeConfig,
- StoreManagerInterface $storeManager,
- AccountManagementInterface $customerAccountManagement,
- CustomerRepositoryInterface $customerRepository,
- Address $addressHelper,
- UrlFactory $urlFactory
- ) {
- $this->session = $customerSession;
- $this->scopeConfig = $scopeConfig;
- $this->storeManager = $storeManager;
- $this->customerAccountManagement = $customerAccountManagement;
- $this->customerRepository = $customerRepository;
- $this->addressHelper = $addressHelper;
- $this->urlModel = $urlFactory->create();
- parent::__construct($context);
- }
- /**
- * Retrieve cookie manager
- *
- * @deprecated 101.0.0
- * @return \Magento\Framework\Stdlib\Cookie\PhpCookieManager
- */
- private function getCookieManager()
- {
- if (!$this->cookieMetadataManager) {
- $this->cookieMetadataManager = \Magento\Framework\App\ObjectManager::getInstance()->get(
- \Magento\Framework\Stdlib\Cookie\PhpCookieManager::class
- );
- }
- return $this->cookieMetadataManager;
- }
- /**
- * Retrieve cookie metadata factory
- *
- * @deprecated 101.0.0
- * @return \Magento\Framework\Stdlib\Cookie\CookieMetadataFactory
- */
- private function getCookieMetadataFactory()
- {
- if (!$this->cookieMetadataFactory) {
- $this->cookieMetadataFactory = \Magento\Framework\App\ObjectManager::getInstance()->get(
- \Magento\Framework\Stdlib\Cookie\CookieMetadataFactory::class
- );
- }
- return $this->cookieMetadataFactory;
- }
- /**
- * Confirm customer account by id and confirmation key
- *
- * @return \Magento\Framework\Controller\Result\Redirect
- */
- public function execute()
- {
- /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
- $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
- if ($this->session->isLoggedIn()) {
- $resultRedirect->setPath('*/*/');
- return $resultRedirect;
- }
- try {
- $customerId = $this->getRequest()->getParam('id', false);
- $key = $this->getRequest()->getParam('key', false);
- if (empty($customerId) || empty($key)) {
- throw new \Exception(__('Bad request.'));
- }
- // log in and send greeting email
- $customerEmail = $this->customerRepository->getById($customerId)->getEmail();
- $customer = $this->customerAccountManagement->activate($customerEmail, $key);
- $this->session->setCustomerDataAsLoggedIn($customer);
- if ($this->getCookieManager()->getCookie('mage-cache-sessid')) {
- $metadata = $this->getCookieMetadataFactory()->createCookieMetadata();
- $metadata->setPath('/');
- $this->getCookieManager()->deleteCookie('mage-cache-sessid', $metadata);
- }
- $this->messageManager->addSuccess($this->getSuccessMessage());
- $resultRedirect->setUrl($this->getSuccessRedirect());
- return $resultRedirect;
- } catch (StateException $e) {
- $this->messageManager->addException($e, __('This confirmation key is invalid or has expired.'));
- } catch (\Exception $e) {
- $this->messageManager->addException($e, __('There was an error confirming the account'));
- }
- $url = $this->urlModel->getUrl('*/*/index', ['_secure' => true]);
- return $resultRedirect->setUrl($this->_redirect->error($url));
- }
- /**
- * Retrieve success message
- *
- * @return string
- */
- protected function getSuccessMessage()
- {
- if ($this->addressHelper->isVatValidationEnabled()) {
- if ($this->addressHelper->getTaxCalculationAddressType() == Address::TYPE_SHIPPING) {
- // @codingStandardsIgnoreStart
- $message = __(
- 'If you are a registered VAT customer, please click <a href="%1">here</a> to enter your shipping address for proper VAT calculation.',
- $this->urlModel->getUrl('customer/address/edit')
- );
- // @codingStandardsIgnoreEnd
- } else {
- // @codingStandardsIgnoreStart
- $message = __(
- 'If you are a registered VAT customer, please click <a href="%1">here</a> to enter your billing address for proper VAT calculation.',
- $this->urlModel->getUrl('customer/address/edit')
- );
- // @codingStandardsIgnoreEnd
- }
- } else {
- $message = __('Thank you for registering with %1.', $this->storeManager->getStore()->getFrontendName());
- }
- return $message;
- }
- /**
- * Retrieve success redirect URL
- *
- * @return string
- */
- protected function getSuccessRedirect()
- {
- $backUrl = $this->getRequest()->getParam('back_url', false);
- $redirectToDashboard = $this->scopeConfig->isSetFlag(
- Url::XML_PATH_CUSTOMER_STARTUP_REDIRECT_TO_DASHBOARD,
- ScopeInterface::SCOPE_STORE
- );
- if (!$redirectToDashboard && $this->session->getBeforeAuthUrl()) {
- $successUrl = $this->session->getBeforeAuthUrl(true);
- } else {
- $successUrl = $this->urlModel->getUrl('*/*/index', ['_secure' => true]);
- }
- return $this->_redirect->success($backUrl ? $backUrl : $successUrl);
- }
- }
|