Интеграция невидимой капчи от Google для Laravel
Невидимая капча (Invisible reCAPTCHA ) — это усовершенствованная версия капчи от гугл, в которой больше нет видимого пользователю блока в который нужно что-либо вводить или даже просто кликать. Новая капча от гугл полностью не видима за исключением небольшного значка на вашем сайте.
Сегодня мы воспользуемся замечательным пакетом для интеграции невидимой капчи в процесс валидации Laravel. Это может быть полезно например при отправке коментариев пользователями на вашем сайте или в контактной форме, что бы изящно и ненавязчива защитить вас от спама.
Итак давайте приступим, для начала вам необходимо установить пакет:
composer require albertcht/invisible-recaptcha
Затем необходимо подключить сервис провайдер в файле: /config/app.php в низу массива ServiceProviders:
AlbertCht\InvisibleReCaptcha\InvisibleReCaptchaServiceProvider::class,
Для начала вам необходимо зарегистрировать своё приложение тут google.com/recaptcha/admin и получить API ключ. Выбирая тип вашей капчи, не забудьте выбрать вариант invisible reCAPTCHA, чтобы она работала в фоновом режиме. После регистрации вашего сайта в гугл, пропишите полученные ключи в глобальных настройках, т.е в файле .env это тот самый где вы пишете подключение к базе данных:
INVISIBLE_RECAPTCHA_SITEKEY={siteKey}
INVISIBLE_RECAPTCHA_SECRETKEY={secretKey}
INVISIBLE_RECAPTCHA_BADGEHIDE=false
INVISIBLE_RECAPTCHA_DEBUG=false
Если вы установите значение INVISIBLE_RECAPTCHA_BADGEHIDE равным true, вы можете скрыть логотип значка в вашей форме.
Так-же вы можете вывести дебаг информацию в консоль браузера установив значение INVISIBLE_RECAPTCHA_DEBUG равным true
Теперь для вывода вашей капчи в любой части вашего Blade шаблона просто используйте вот такой вызов:
{!! app('captcha')->render(); !!}
Так же вы можете задать кастомный язык для вывода ошибок:
{!! app('captcha')->render($lang = null); !!}
Осталось только добавить правило в валидацию формы:
$validate = Validator::make(Input::all(), [
//...
'g-recaptcha-response' => 'required|captcha'
]);
Вот собственно и всё, формы на вашем сайте будут защищёнными и ненавязчивыми для простых пользователей.