Столкнулся с проблемой валидации mews/captcha.
При использовании стандартного правила валидации
'captcha' => 'required|captcha'
Правило captcha не работало: любой набор символов был валиден.
Решение нашел тут: https://stackoverflow.com/questions/53722858/mewebstudio-captcha-wrong-captcha-in-validation.
Суть:
- Создаем правило
php artisan make:rule ValidateCaptcha
- Открываем app/Rules/ValidateCaptcha и делаем так
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
use Illuminate\Support\Facades\Hash;
class ValidateCaptcha implements Rule
{
/**
* Create a new rule instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
return Hash::check($value, session('captcha.key'));
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'Неверный код с картинки';
}
}
- Теперь используем такое правило(не забываем use App\Rules\ValidateCaptcha; )
'captcha' => ['required', new ValidateCaptcha],