59 ->get(\
Magento\Framework\Serialize\Serializer\Json::class);
70 public function aroundExecute(
71 \
Magento\Customer\Controller\Ajax\Login $subject,
74 $captchaFormIdField =
'captcha_form_id';
75 $captchaInputName =
'captcha_string';
83 $loginParams = $this->serializer->unserialize(
$content);
85 $username = $loginParams[
'username'] ??
null;
86 $captchaString = $loginParams[$captchaInputName] ??
null;
87 $loginFormId = $loginParams[$captchaFormIdField] ??
null;
89 if (!in_array($loginFormId, $this->formIds) && $this->helper->getCaptcha($loginFormId)->isRequired($username)) {
90 return $this->returnJsonError(
__(
'Provided form does not exist'));
93 foreach ($this->formIds as $formId) {
94 if ($formId === $loginFormId) {
95 $captchaModel = $this->helper->getCaptcha($formId);
96 if ($captchaModel->isRequired($username)) {
97 $captchaModel->logAttempt($username);
98 if (!$captchaModel->isCorrect($captchaString)) {
99 $this->sessionManager->setUsername($username);
100 return $this->returnJsonError(
__(
'Incorrect CAPTCHA'));
113 private function returnJsonError(\
Magento\Framework\Phrase $phrase): \
Magento\Framework\Controller\Result\Json
115 $resultJson = $this->resultJsonFactory->create();
116 return $resultJson->setData([
'errors' =>
true,
'message' => $phrase]);
__construct(CaptchaHelper $helper, SessionManagerInterface $sessionManager, JsonFactory $resultJsonFactory, array $formIds, \Magento\Framework\Serialize\Serializer\Json $serializer=null)