russsiq/laravel-grecaptcha

Расширение валидатора Laravel 9.x для проверки Google reCAPTCHA v3.

Downloads

123

Stars

1

Version

0.3.1

Расширение валидатора Laravel 9.x для проверки Google reCAPTCHA v3

Расширение валидатора фреймворка 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.

russsiq

Author

russsiq