RDRybinAvatar photo

Столкнулся с проблемой валидации 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],

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *