Download the PHP package vvb/yandex-smart-captcha without Composer
On this page you can find all versions of the php package vvb/yandex-smart-captcha. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download vvb/yandex-smart-captcha
More information about vvb/yandex-smart-captcha
Files in vvb/yandex-smart-captcha
Package yandex-smart-captcha
Short Description Yandex Smart Captcha integration for Laravel 10/11/12/13
License MIT
Homepage https://github.com/vvb/yandex-smart-captcha
Informations about the package yandex-smart-captcha
Yandex Smart Captcha для Laravel 10/11/12/13
Пакет для интеграции Yandex Cloud Smart Captcha в Laravel приложения. Поддерживает Blade-компоненты, Vue 3 компонент, JS-хелпер для API-only проектов, валидацию через Rule, Facade и переводы.
Установка
Миграция с v0.x
Breaking Changes
-
Конфиг: добавлены новые ключи (
script_url,validate_url,language,theme,test,http_timeout,enabled,validate_host). После обновления выполните: - Имя скрытого поля токена: теперь всегда
smart-token(ранее было настраиваемое) - Новые пропсы Blade-компонента:
container,formId,lang,theme,test,invisible,shieldPosition,hideShield,enabled - Конструктор Service: теперь принимает массив конфига вместо двух строк
- Синглтон привязан к строке
'yandex-smart-captcha'(исправлен баг с Facade/Rule)
Что продолжает работать без изменений
- Facade
YandexSmartCaptcha::verify() - Rule
new YandexSmartCaptchaRule() - Синглтон
app('yandex-smart-captcha')
What's New in v1.0
- Invisible-режим (execute/executePromise)
- Vue 3 компонент с v-model и lazy load
- JS-хелпер (ES-модуль) для SPA/API-only
- Опциональная валидация хоста (
validate_host) - Переводы сообщений валидации (ru/en)
- Тестовый режим (
test)
Настройка
- Получите ключи в Yandex Cloud Console
-
Добавьте в
.env: - Опубликуйте конфиг (при обновлении — с флагом
--force):
Использование
Blade-компонент
| Пропсы компонента: | Пропс | Тип | По умолчанию | Описание |
|---|---|---|---|---|
container |
string | null | auto (uniqid) | CSS-селектор контейнера для виджета |
formId |
string | null | null | ID формы для сохранения widgetId в window.__smartcaptchaContainers |
lang |
string | config('yandex-smart-captcha.language') |
Язык виджета (ru, en, uk, tr, lv) | |
theme |
string | config('yandex-smart-captcha.theme') |
Тема: light, dark, auto |
|
test |
bool | config('yandex-smart-captcha.test') |
Тестовый режим Яндекса | |
invisible |
bool | false |
Невидимый режим (требует ручной вызов executeWidget) | |
shieldPosition |
string | null | null | Позиция уведомления об обработке данных: left, right, bottom-left, bottom-right |
hideShield |
bool | false |
Скрыть уведомление об обработке данных | |
enabled |
bool | config('yandex-smart-captcha.enabled') |
Отключает рендер капчи (возвращает пустой div) |
Важно: Виджет создаёт <input type="hidden" name="smart-token" value="..."> внутри контейнера. Используйте имя поля smart-token при валидации.
Валидация (PHP Rule)
Кастомные сообщения:
Или через языковые файлы (resources/lang/{locale}/validation.php):
PHP API (Facade / Service)
Или через сервис:
Invisible-режим (Blade + JS)
Vue 3 компонент
Установка и регистрация:
Или локально в компоненте:
Использование:
| Пропсы Vue: | Пропс | Тип | По умолчанию | Описание |
|---|---|---|---|---|
modelValue (v-model) |
string | '' |
Токен капчи | |
container |
string | auto | ID контейнера или CSS-селектор | |
lang |
string | VITE_SMARTCAPTCHA_LANG или ru |
Язык | |
theme |
string | VITE_SMARTCAPTCHA_THEME или auto |
Тема | |
test |
bool | VITE_SMARTCAPTCHA_TEST |
Тестовый режим | |
invisible |
bool | false |
Невидимый режим | |
shieldPosition |
string | null | null | Позиция уведомления об обработке данных |
hideShield |
bool | false |
Скрыть уведомление об обработке данных | |
enabled |
bool | true |
Включить/выключить капчу | |
formId |
string | null | null | ID формы для window.__smartcaptchaContainers |
scriptUrl |
string | null | VITE_SMARTCAPTCHA_SCRIPT_URL |
URL скрипта |
Эмиты:
update:modelValue(token) — новый токенsuccess(token) — успешное прохождениеtoken-expired— токен устарелnetwork-error— ошибка сетиjavascript-error(error) — JS ошибкаchallenge-visible/challenge-hidden— состояние челленджа
Expose-методы (через ref):
getResponse()— текущий токенreset()— сброс виджетаresetToken()— сброс виджета + обнуление v-modelexecute()— запуск invisible капчиexecutePromise()— Promiseс токеном (invisible)
Переменные окружения (Vite):
JS-хелпер (ES-модуль)
Для API-only проектов или ручного управления:
Важно — токены
- Токен SmartCaptcha можно использовать только один раз. После отправки формы токен сгорает.
- При ошибке валидации (422) необходим новый токен:
- Vue: используйте
resetToken()черезdefineExpose - Blade: перезагрузка страницы
- Vue: используйте
- Время жизни токена — 5 минут. По истечении токен недействителен.
Конфигурация (config/yandex-smart-captcha.php)
Логирование
При ошибках API логируется на уровень ERROR:
- HTTP ошибки (не 200)
- Некорректный JSON ответ
- Ошибки соединения (таймаут, DNS, SSL)
При status: failed с непустым message — WARNING (диагностика неверного ключа/токена).
При validate_host=true и несовпадении хоста — WARNING.
При enabled=false — никаких HTTP запросов и логирования.
Тестирование
Установлены dev-зависимости: pestphp/pest, orchestra/testbench.
Лицензия
MIT License.