vvb/yandex-smart-captcha

Yandex Smart Captcha integration for Laravel 10/11

0.1.15 2025-03-06 11:38 UTC

This package is auto-updated.

Last update: 2025-04-06 11:59:31 UTC


README

Latest Version PHP Version Laravel Version

Пакет для простой интеграции Yandex Cloud Smart Captcha в Laravel приложения

Установка

composer require vvb/yandex-smart-captcha

Настройка

  1. Получите ключи в Yandex Cloud Console
  2. Добавьте в .env:
YANDEX_SMART_CAPTCHA_CLIENT_KEY=your_client_key
YANDEX_SMART_CAPTCHA_SERVER_KEY=your_server_key
  1. Опубликуйте конфиг:
php artisan vendor:publish --tag=config --provider="vvb\YandexSmartCaptcha\YandexSmartCaptchaServiceProvider"

Использование

1. Добавление капчи в форму

<form method="POST">
    @csrf
    
    <!-- Стандартный вид -->
    <x-yandex-smart-captcha::smart-captcha />

    <!-- С кастомным контейнером -->
    <div id="my-captcha-container"></div>
    <x-yandex-smart-captcha::smart-captcha container="my-captcha-container" />

    <button type="submit">Отправить</button>
</form>

2. Валидация запроса

use vvb\YandexSmartCaptcha\Rules\YandexSmartCaptchaRule;

public function store(Request $request)
{
    $request->validate([
        'smart-token' => [new YandexSmartCaptchaRule],
    ]);
    
    // Ваша логика
}

Кастомизация сообщений

Через конструктор

new YandexSmartCaptchaRule(
    message: 'Неверная капча!',
    emptyMessage: 'Пожалуйста, пройдите проверку'
)

Через языковые файлы

Добавьте в resources/lang/xx/validation.php:

return [
    'yandex_smart_captcha_rule' => 'Капча не пройдена',
    'yandex_smart_captcha_empty' => 'Требуется подтверждение капчи',
];

Локализация капчи

Измените параметр hl в Blade-компоненте:

<x-yandex-smart-captcha::smart-captcha lang="en" />

Поддерживаемые языки: ru, en, uk, tr, lv

Пример контроллера

use Illuminate\Http\Request;
use vvb\YandexSmartCaptcha\Rules\YandexSmartCaptchaRule;

class FormController extends Controller
{
    public function showForm()
    {
        return view('form');
    }

    public function submitForm(Request $request)
    {
        $request->validate([
            'email' => 'required|email',
            'smartcaptcha_token' => [
                new YandexSmartCaptchaRule(
                    __('validation.captcha_failed'),
                    __('validation.captcha_required')
                )
            ]
        ]);

        // Логика обработки формы
        return back()->with('success', 'Форма успешно отправлена!');
    }
}

Лицензия

MIT License.

Документация Yandex SmartCaptcha