В Laravel с ReCaptcha V3 как получить доступ к «счету», возвращенному из правила? - PullRequest
0 голосов
/ 17 февраля 2019

В Laravel , я настраиваю Google ReCaptcha V3 , который теперь возвращает «счет».Мне удалось настроить правило проверки, чтобы разрешить отправку формы (все работает), но это только возвращает значение true или false, чтобы пройти проверку.

Как вместо этого основать это на оценке?

Я использую этот пакет композитора, чтобы выручить меня - https://github.com/google/recaptcha

Это в моем контроллере (куда я отправляю токен для проверки с сервером):

// validation
$this->validate( $request, array(
    'g_recaptcha_response' => ['required', 'string', new Captcha()]
));

Это правило:

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;
use ReCaptcha\ReCaptcha;

class Captcha implements Rule
{

    public function __construct()
    {
        //
    }

    public function passes($attribute, $value)
    {
        $recaptcha = new ReCaptcha('SECRET');
        $response = $recaptcha->verify($value, $_SERVER['REMOTE_ADDR']);
        return $response->isSuccess();
    }

    public function message()
    {
        return 'Are you a robot?';
    }

}

Можно ли как-нибудь получить доступ к классу из контроллера?В пакете я вижу, что мне нужно использовать ->getScore(), но я не знаю, как получить к нему доступ?

1 Ответ

0 голосов
/ 18 февраля 2019

Как вы делаете в правиле проверки, вы также можете получить счет в контроллере:

public function something(YourRequest $request){

    $recaptcha = new ReCaptcha('SECRET');
    $response = $recaptcha->verify($request->g_recaptcha_response, $request->ip());
    $score =  $response->getScore();
}

Более доступные методы ответа можно найти здесь

...