Muchas veces en nuestro proyecto de Laravel nos llegan mensajes SPAM o necesitamos bloquear alguna IP. Honey es un paquete ligero para Laravel que se encarga de evitar el SPAM y bloquear todo tipo de intento de comunicación de su parte. En esta guía te voy a enseñar como instalar Honey en Laravel 8, tanto como si tenés Livewire o no, para que puedas integrar reCaptcha v3 de manera rápida y prolija.
Configurar Google reCAPTCHA v3
Lo primero que debemos hacer es registrarnos en Google reCaptcha con nuestro gmail. Luego vamos a dar de alta las credenciales para conectar reCaptcha v3 en Laravel desde el siguiente enlace.
Seleccionamos Google reCaptcha v3 y agregamos los dominios, que pueden ser los de pruebas y producción. Una vez finalizado el proceso de registro, Google reCaptcha nos dará dos claves para usar en nuestro proyecto de Laravel. Abrimos el archivo .env de nuestro proyecto y agregamos al final las dos siguientes líneas:
RECAPTCHA_SITE_KEY=INGRESAR_CLAVE_DE_SITIO
RECAPTCHA_SECRET_KEY=INGRESAR_CLAVE_SECRETA
Instalación de Honey en Laravel
La instalación del paquete Honey anti-spam en Laravel es muy sencilla. Lo primero es instalar las dependencias:
composer require lukeraymonddowning/honey
Publicamos la configuración inicial de Honey:
php artisan honey:install
y por ultimo, migramos la nueva tabla de “spammers” que nos crea el paquete de Honey para Laravel 8.
php artisan migrate
Listo, ya tenemos instalado Honey en Laravel 8 para integrar reCaptcha de Google.
Como Agregar reCaptcha a los Forms
Para agregar reCaptcha a los Forms con Honey es un proceso simple. Solamente debemos agregar el Componente <x-honey-recaptcha/> en nuestro form:
<form action="{{ route('some.route') }}" method="POST">
@csrf
<input type="email" placeholder="Your email" required />
<x-honey-recaptcha/>
<button type="submit">Subscribe!</button>
</form>
Gracias a Honey, si Google reCaptcha no puede verificar que la persona utilizando el form no es un robot, hará que el form no se pueda enviar. Y agregara a Spam por 3 minutos la dirección IP.
Como Agregar reCaptcha en Form con Livewire
Para integrar google reCaptcha con Livewire debemos realizar una serie de implementaciones extra para que funcione correctamente.
Lo primero es integrar el trait WithRecaptcha en nuestro componente Livewire:
<?php
namespace App\Http\Livewire;
use Livewire\Component;
...
use Lukeraymonddowning\Honey\Traits\WithRecaptcha; //Trait
class ContactForm extends Component
{
use WithRecaptcha; //Usar Trait
...
public function submit()
{
...
//Verificar si pasa el Captcha
if(!($this->recaptchaPasses())){
session()->flash("error", __("Error verificando Recaptcha"));
}
Ahora solo nos queda modificar la vista del componente de Livewire. Para ello abrimos la vista, generalmente en resources/views/livewire y agregamos al formulario el componente de Honey antes de cerrar el form.
...
<x-honey recaptcha="contact"/>
</form>
Se puede utilizar =”contact” para determinar el segmento de Google reCaptcha v3 y poder tener una mejor calidad de analíticos en la página de administración de reCaptcha.
Para ver todas las funcionalidades de Honey para Laravel e integrar correctamente reCaptcha o hCaptcha visita el siguiente enlace:
lukeraymonddowning/honey: A spam prevention package for Laravel, providing honeypot techniques, ip blocking and beautifully simple Recaptcha integration. Stop spam. Use Honey. (github.com)