| Current Path : /home/rtorresani/www/vendor/magento/module-customer/Controller/Account/ |
| Current File : //home/rtorresani/www/vendor/magento/module-customer/Controller/Account/ForgotPasswordPost.php |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Customer\Controller\Account;
use Magento\Framework\App\Action\HttpPostActionInterface as HttpPostActionInterface;
use Magento\Customer\Api\AccountManagementInterface;
use Magento\Customer\Model\AccountManagement;
use Magento\Customer\Model\Session;
use Magento\Framework\App\Action\Context;
use Magento\Framework\Controller\Result\Redirect;
use Magento\Framework\Escaper;
use Magento\Framework\Exception\NoSuchEntityException;
use Magento\Framework\Exception\SecurityViolationException;
use Magento\Framework\Validator\EmailAddress;
use Magento\Framework\Validator\ValidatorChain;
/**
* ForgotPasswordPost controller
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*/
class ForgotPasswordPost extends \Magento\Customer\Controller\AbstractAccount implements HttpPostActionInterface
{
/**
* @var \Magento\Customer\Api\AccountManagementInterface
*/
protected $customerAccountManagement;
/**
* @var \Magento\Framework\Escaper
*/
protected $escaper;
/**
* @var Session
*/
protected $session;
/**
* @param Context $context
* @param Session $customerSession
* @param AccountManagementInterface $customerAccountManagement
* @param Escaper $escaper
*/
public function __construct(
Context $context,
Session $customerSession,
AccountManagementInterface $customerAccountManagement,
Escaper $escaper
) {
$this->session = $customerSession;
$this->customerAccountManagement = $customerAccountManagement;
$this->escaper = $escaper;
parent::__construct($context);
}
/**
* Forgot customer password action
*
* @return Redirect
*/
public function execute()
{
/** @var Redirect $resultRedirect */
$resultRedirect = $this->resultRedirectFactory->create();
$email = (string)$this->getRequest()->getPost('email');
if ($email) {
if (!ValidatorChain::is($email, EmailAddress::class)) {
$this->session->setForgottenEmail($email);
$this->messageManager->addErrorMessage(
__('The email address is incorrect. Verify the email address and try again.')
);
return $resultRedirect->setPath('*/*/forgotpassword');
}
try {
$this->customerAccountManagement->initiatePasswordReset(
$email,
AccountManagement::EMAIL_RESET
);
// phpcs:ignore Magento2.CodeAnalysis.EmptyBlock.DetectedCatch
} catch (NoSuchEntityException $exception) {
// Do nothing, we don't want anyone to use this action to determine which email accounts are registered.
} catch (SecurityViolationException $exception) {
$this->messageManager->addErrorMessage($exception->getMessage());
return $resultRedirect->setPath('*/*/forgotpassword');
} catch (\Exception $exception) {
$this->messageManager->addExceptionMessage(
$exception,
__('We\'re unable to send the password reset email.')
);
return $resultRedirect->setPath('*/*/forgotpassword');
}
$this->messageManager->addSuccessMessage($this->getSuccessMessage($email));
return $resultRedirect->setPath('*/*/');
} else {
$this->messageManager->addErrorMessage(__('Please enter your email.'));
return $resultRedirect->setPath('*/*/forgotpassword');
}
}
/**
* Retrieve success message
*
* @param string $email
* @return \Magento\Framework\Phrase
*/
protected function getSuccessMessage($email)
{
return __(
'If there is an account associated with %1 you will receive an email with a link to reset your password.',
$this->escaper->escapeHtml($email)
);
}
}