CaptchaRequestToken.php 1.57 KB
Newer Older
Ketan's avatar
Ketan committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

namespace Magento\PaypalCaptcha\Observer;

use Magento\Captcha\Helper\Data;
use Magento\Framework\App\Action\Action;
use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;
use Magento\Framework\App\ActionFlag ;

/**
 * Validates Captcha for Request Token controller
 */
class CaptchaRequestToken implements ObserverInterface
{
    /**
     * @var Data
     */
    private $helper;

    /**
     * @var ActionFlag
     */
    private $actionFlag;

    /**
     * @param Data $helper
     * @param ActionFlag $actionFlag
     */
    public function __construct(Data $helper, ActionFlag $actionFlag)
    {
        $this->helper = $helper;
        $this->actionFlag = $actionFlag;
    }

    /**
     * @inheritdoc
     */
    public function execute(Observer $observer)
    {
        $formId = 'co-payment-form';
        $captcha = $this->helper->getCaptcha($formId);

        if (!$captcha->isRequired()) {
            return;
        }

        /** @var Action $controller */
        $controller = $observer->getControllerAction();
        $word = $controller->getRequest()->getPost('captcha_string');
        if ($captcha->isCorrect($word)) {
            return;
        }

        $data = json_encode([
            'success' => false,
            'error' => true,
            'error_messages' => __('Incorrect CAPTCHA.')
        ]);
        $this->actionFlag->set('', Action::FLAG_NO_DISPATCH, true);
        $controller->getResponse()->representJson($data);
    }
}