CheckUserLoginBackendObserver.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. use Magento\Framework\Exception\Plugin\AuthenticationException as PluginAuthenticationException;
  9. class CheckUserLoginBackendObserver implements ObserverInterface
  10. {
  11. /**
  12. * @var \Magento\Captcha\Helper\Data
  13. */
  14. protected $_helper;
  15. /**
  16. * @var CaptchaStringResolver
  17. */
  18. protected $captchaStringResolver;
  19. /**
  20. * @var \Magento\Framework\App\RequestInterface
  21. */
  22. protected $_request;
  23. /**
  24. * @param \Magento\Captcha\Helper\Data $helper
  25. * @param CaptchaStringResolver $captchaStringResolver
  26. * @param \Magento\Framework\App\RequestInterface $request
  27. */
  28. public function __construct(
  29. \Magento\Captcha\Helper\Data $helper,
  30. CaptchaStringResolver $captchaStringResolver,
  31. \Magento\Framework\App\RequestInterface $request
  32. ) {
  33. $this->_helper = $helper;
  34. $this->captchaStringResolver = $captchaStringResolver;
  35. $this->_request = $request;
  36. }
  37. /**
  38. * Check Captcha On User Login Backend Page
  39. *
  40. * @param \Magento\Framework\Event\Observer $observer
  41. * @throws \Magento\Framework\Exception\Plugin\AuthenticationException
  42. * @return $this
  43. */
  44. public function execute(\Magento\Framework\Event\Observer $observer)
  45. {
  46. $formId = 'backend_login';
  47. $captchaModel = $this->_helper->getCaptcha($formId);
  48. $login = $observer->getEvent()->getUsername();
  49. if ($captchaModel->isRequired($login)
  50. && !$captchaModel->isCorrect($this->captchaStringResolver->resolve($this->_request, $formId))
  51. ) {
  52. $captchaModel->logAttempt($login);
  53. throw new PluginAuthenticationException(__('Incorrect CAPTCHA.'));
  54. }
  55. $captchaModel->logAttempt($login);
  56. return $this;
  57. }
  58. }