russsiq / laravel-grecaptcha
Расширение валидатора Laravel 9.x для проверки Google reCAPTCHA v3.
Requires
- php: 8.1.*
- guzzlehttp/guzzle: ^7.4.4
- illuminate/support: 9.*
Requires (Dev)
- phpunit/phpunit: ^9.5.20
README
Расширение валидатора фреймворка Laravel 9.x для использования Google reCAPTCHA v3. Выполняет запрос к сервису об оценке действий пользователя без его участия для блокирования отправки форм ботами, которые чаще всего спамят.
Перед использованием пакета зарегистрируйтесь и получите Ключ и Секретный ключ: https://g.co/recaptcha/v3.
Подключение
Для добавления зависимости в проект на Laravel, используйте менеджер пакетов Composer:
composer require russsiq/laravel-grecaptcha
Если в вашем приложении включен отказ от обнаружения пакетов в директиве dont-discover
в разделе extra
файла composer.json
, то необходимо самостоятельно добавить следующее в файле config/app.php
:
- Провайдер услуг в раздел
providers
:
Russsiq\GRecaptcha\GRecaptchaServiceProvider::class,
- Псевдоним класса (Facade) в раздел
aliases
:
'GRecaptcha' => Russsiq\GRecaptcha\Support\Facades\GRecaptcha::class,
Публикация файлов пакета
Публикация (копирование) всех доступных файлов для переопределения и тонкой настройки пакета осуществляется через интерфейс командной строки Artisan:
php artisan vendor:publish --provider="Russsiq\GRecaptcha\GRecaptchaServiceProvider"
Помимо этого, доступна групповая публикация файлов по отдельным меткам config
, fonts
, lang
, views
:
php artisan vendor:publish --provider="Russsiq\GRecaptcha\GRecaptchaServiceProvider" --tag=config --force
php artisan vendor:publish --provider="Russsiq\GRecaptcha\GRecaptchaServiceProvider" --tag=fonts --force
php artisan vendor:publish --provider="Russsiq\GRecaptcha\GRecaptchaServiceProvider" --tag=lang --force
php artisan vendor:publish --provider="Russsiq\GRecaptcha\GRecaptchaServiceProvider" --tag=views --force
Настройка
Вставьте Ключ и Секретный ключ в соответствующие поля в файле config/g_recaptcha.php
вашего проекта.
Помимо капчи от Google расширение поддерживает пустой драйвер и драйвер капчи, основанный на вводе четырехзначного кода. Выбор выполняется в файле конфигурации расширения config/g_recaptcha.php
:
return [ // Драйвер, используемый по умолчанию. // Поддерживаемые типы: `nullable`, `image_code`, `google_v3`. 'driver' => env('GRECAPTCHA_DRIVER', 'google_v3'), // Настройки драйверов. 'drivers' => [ // ...code ], ];
Использование
Добавьте скрытое поле в обрабатываемую форму, используя директиву @g_recaptcha_input
. Например:
@error ('g-recaptcha-response') <div class="alert alert-danger" role="alert"> @lang('g_recaptcha::g_recaptcha.messages.fails') </div> @enderror <form action="/profile" method="POST"> @csrf @if (config('g_recaptcha.used')) <div class="form-group row"> <div class="col-md-4"> @g_recaptcha_input </div> </div> @endif <!-- ...code --> </form>
Добавьте JavaScript в главный шаблон перед закрывающим тегом </body>
, используя директиву @g_recaptcha_script
.
Обе директивы могут принимать по одному входящему параметру, в котором можно указать относительные пути на расположение шаблонов.
После отправки формы и в случае применения асинхронного запроса (AJAX), для обновления скрытого поля используйте JavaScript функцию grecaptcha_reload();
.
Обе директивы не являются обязательным к использованию: вы можете самостоятельно сформировать как скрытое поле, так и логику JavaScript.
Объявление правил проверки (валидации)
/** * Получить массив правил валидации, * которые будут применены к запросу. * @return array */ public function rules(): array { return [ 'title' => [ // ...code ], 'body' => [ // ...code ], 'g-recaptcha-response' => [ 'bail', config('g_recaptcha.used') ? 'required' : 'nullable', 'string', 'g_recaptcha', ], ]; }
Тестирование
Для запуска тестов используйте команду:
composer run-script test
Для запуска тестов и формирования agile-документации, генерируемой в HTML-формате и записываемой в файл tests/testdox.html, используйте команду:
composer run-script testdox
Удаление пакета
Для удаления пакета из вашего проекта на Laravel используйте команду:
composer remove russsiq/laravel-zipper
Лицензия
laravel-grecaptcha
– программное обеспечение с открытым исходным кодом, распространяющееся по лицензии MIT.