CheckForgotpasswordObserver.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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 CheckForgotpasswordObserver implements ObserverInterface
  9. {
  10. /**
  11. * @var \Magento\Captcha\Helper\Data
  12. */
  13. protected $_helper;
  14. /**
  15. * @var \Magento\Framework\App\ActionFlag
  16. */
  17. protected $_actionFlag;
  18. /**
  19. * @var \Magento\Framework\Message\ManagerInterface
  20. */
  21. protected $messageManager;
  22. /**
  23. * @var \Magento\Framework\App\Response\RedirectInterface
  24. */
  25. protected $redirect;
  26. /**
  27. * @var CaptchaStringResolver
  28. */
  29. protected $captchaStringResolver;
  30. /**
  31. * @param \Magento\Captcha\Helper\Data $helper
  32. * @param \Magento\Framework\App\ActionFlag $actionFlag
  33. * @param \Magento\Framework\Message\ManagerInterface $messageManager
  34. * @param \Magento\Framework\App\Response\RedirectInterface $redirect
  35. * @param CaptchaStringResolver $captchaStringResolver
  36. */
  37. public function __construct(
  38. \Magento\Captcha\Helper\Data $helper,
  39. \Magento\Framework\App\ActionFlag $actionFlag,
  40. \Magento\Framework\Message\ManagerInterface $messageManager,
  41. \Magento\Framework\App\Response\RedirectInterface $redirect,
  42. CaptchaStringResolver $captchaStringResolver
  43. ) {
  44. $this->_helper = $helper;
  45. $this->_actionFlag = $actionFlag;
  46. $this->messageManager = $messageManager;
  47. $this->redirect = $redirect;
  48. $this->captchaStringResolver = $captchaStringResolver;
  49. }
  50. /**
  51. * Check Captcha On Forgot Password Page
  52. *
  53. * @param \Magento\Framework\Event\Observer $observer
  54. * @return $this
  55. */
  56. public function execute(\Magento\Framework\Event\Observer $observer)
  57. {
  58. $formId = 'user_forgotpassword';
  59. $captchaModel = $this->_helper->getCaptcha($formId);
  60. if ($captchaModel->isRequired()) {
  61. /** @var \Magento\Framework\App\Action\Action $controller */
  62. $controller = $observer->getControllerAction();
  63. if (!$captchaModel->isCorrect($this->captchaStringResolver->resolve($controller->getRequest(), $formId))) {
  64. $this->messageManager->addError(__('Incorrect CAPTCHA'));
  65. $this->_actionFlag->set('', \Magento\Framework\App\Action\Action::FLAG_NO_DISPATCH, true);
  66. $this->redirect->redirect($controller->getResponse(), '*/*/forgotpassword');
  67. }
  68. }
  69. return $this;
  70. }
  71. }