CheckUserForgotPasswordBackendObserver.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Captcha\Observer;
  7. use Magento\Framework\Event\ObserverInterface;
  8. class CheckUserForgotPasswordBackendObserver implements ObserverInterface
  9. {
  10. /**
  11. * @var \Magento\Captcha\Helper\Data
  12. */
  13. protected $_helper;
  14. /**
  15. * @var CaptchaStringResolver
  16. */
  17. protected $captchaStringResolver;
  18. /**
  19. * @var \Magento\Framework\Session\SessionManagerInterface
  20. */
  21. protected $_session;
  22. /**
  23. * @var \Magento\Framework\App\ActionFlag
  24. */
  25. protected $_actionFlag;
  26. /**
  27. * @var \Magento\Framework\Message\ManagerInterface
  28. */
  29. protected $messageManager;
  30. /**
  31. * @param \Magento\Captcha\Helper\Data $helper
  32. * @param CaptchaStringResolver $captchaStringResolver
  33. * @param \Magento\Framework\Session\SessionManagerInterface $session
  34. * @param \Magento\Framework\App\ActionFlag $actionFlag
  35. * @param \Magento\Framework\Message\ManagerInterface $messageManager
  36. */
  37. public function __construct(
  38. \Magento\Captcha\Helper\Data $helper,
  39. CaptchaStringResolver $captchaStringResolver,
  40. \Magento\Framework\Session\SessionManagerInterface $session,
  41. \Magento\Framework\App\ActionFlag $actionFlag,
  42. \Magento\Framework\Message\ManagerInterface $messageManager
  43. ) {
  44. $this->_helper = $helper;
  45. $this->captchaStringResolver = $captchaStringResolver;
  46. $this->_session = $session;
  47. $this->_actionFlag = $actionFlag;
  48. $this->messageManager = $messageManager;
  49. }
  50. /**
  51. * Check Captcha On User Login Backend Page
  52. *
  53. * @param \Magento\Framework\Event\Observer $observer
  54. * @throws \Magento\Framework\Exception\Plugin\AuthenticationException
  55. * @return $this
  56. */
  57. public function execute(\Magento\Framework\Event\Observer $observer)
  58. {
  59. $formId = 'backend_forgotpassword';
  60. $captchaModel = $this->_helper->getCaptcha($formId);
  61. $controller = $observer->getControllerAction();
  62. $email = (string)$observer->getControllerAction()->getRequest()->getParam('email');
  63. $params = $observer->getControllerAction()->getRequest()->getParams();
  64. if (!empty($email)
  65. && !empty($params)
  66. && $captchaModel->isRequired()
  67. && !$captchaModel->isCorrect($this->captchaStringResolver->resolve($controller->getRequest(), $formId))
  68. ) {
  69. $this->_session->setEmail((string)$controller->getRequest()->getPost('email'));
  70. $this->_actionFlag->set('', \Magento\Framework\App\Action\Action::FLAG_NO_DISPATCH, true);
  71. $this->messageManager->addError(__('Incorrect CAPTCHA'));
  72. $controller->getResponse()->setRedirect(
  73. $controller->getUrl('*/*/forgotpassword', ['_nosecret' => true])
  74. );
  75. }
  76. return $this;
  77. }
  78. }