CheckUserCreateObserver.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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 CheckUserCreateObserver 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\Session\SessionManagerInterface
  24. */
  25. protected $_session;
  26. /**
  27. *
  28. * @var \Magento\Framework\UrlInterface
  29. */
  30. protected $_urlManager;
  31. /**
  32. * @var CaptchaStringResolver
  33. */
  34. protected $captchaStringResolver;
  35. /**
  36. * @var \Magento\Framework\App\Response\RedirectInterface
  37. */
  38. protected $redirect;
  39. /**
  40. * @param \Magento\Captcha\Helper\Data $helper
  41. * @param \Magento\Framework\App\ActionFlag $actionFlag
  42. * @param \Magento\Framework\Message\ManagerInterface $messageManager
  43. * @param \Magento\Framework\Session\SessionManagerInterface $session
  44. * @param \Magento\Framework\UrlInterface $urlManager
  45. * @param \Magento\Framework\App\Response\RedirectInterface $redirect
  46. * @param CaptchaStringResolver $captchaStringResolver
  47. */
  48. public function __construct(
  49. \Magento\Captcha\Helper\Data $helper,
  50. \Magento\Framework\App\ActionFlag $actionFlag,
  51. \Magento\Framework\Message\ManagerInterface $messageManager,
  52. \Magento\Framework\Session\SessionManagerInterface $session,
  53. \Magento\Framework\UrlInterface $urlManager,
  54. \Magento\Framework\App\Response\RedirectInterface $redirect,
  55. CaptchaStringResolver $captchaStringResolver
  56. ) {
  57. $this->_helper = $helper;
  58. $this->_actionFlag = $actionFlag;
  59. $this->messageManager = $messageManager;
  60. $this->_session = $session;
  61. $this->_urlManager = $urlManager;
  62. $this->redirect = $redirect;
  63. $this->captchaStringResolver = $captchaStringResolver;
  64. }
  65. /**
  66. * Check Captcha On User Login Page
  67. *
  68. * @param \Magento\Framework\Event\Observer $observer
  69. * @return $this
  70. */
  71. public function execute(\Magento\Framework\Event\Observer $observer)
  72. {
  73. $formId = 'user_create';
  74. $captchaModel = $this->_helper->getCaptcha($formId);
  75. if ($captchaModel->isRequired()) {
  76. /** @var \Magento\Framework\App\Action\Action $controller */
  77. $controller = $observer->getControllerAction();
  78. if (!$captchaModel->isCorrect($this->captchaStringResolver->resolve($controller->getRequest(), $formId))) {
  79. $this->messageManager->addError(__('Incorrect CAPTCHA'));
  80. $this->_actionFlag->set('', \Magento\Framework\App\Action\Action::FLAG_NO_DISPATCH, true);
  81. $this->_session->setCustomerFormData($controller->getRequest()->getPostValue());
  82. $url = $this->_urlManager->getUrl('*/*/create', ['_nosecret' => true]);
  83. $controller->getResponse()->setRedirect($this->redirect->error($url));
  84. }
  85. }
  86. return $this;
  87. }
  88. }