cotiga/spam-guard

Antispam et gestion des erreurs HTTP pour applications Laravel (géoblocage, filtrage email, ban IP automatique).

Maintainers

Package info

github.com/cotiga/cotiga-spam-guard

pkg:composer/cotiga/spam-guard

Statistics

Installs: 17

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.4 2026-05-21 16:16 UTC

This package is auto-updated.

Last update: 2026-05-23 00:06:39 UTC


README

Package Laravel — antispam formulaires et gestion des erreurs HTTP.

  • Rate limiting par IP
  • Filtrage email : TLD, domaine, patterns suspects
  • Détection nom avec chiffres, nom charabia, message générique de bot, message charabia
  • Validation téléphone (format date, lettres, longueur hors norme)
  • Géoblocage (via stevebauman/location)
  • Log et ban automatique des IPs abusives
  • Email d'alerte sur erreurs récurrentes

Installation

composer require cotiga/spam-guard
php artisan migrate

Configuration

php artisan vendor:publish --tag=spam-guard-config

Le fichier config/spam-guard.php permet de personnaliser tous les seuils, listes de pays, TLD, patterns, etc.

Handler d'exceptions

Dans app/Exceptions/Handler.php, étendre la classe du package :

<?php

namespace App\Exceptions;

use Cotiga\SpamGuard\Exceptions\SpamGuardHandler;
use Throwable;

class Handler extends SpamGuardHandler
{
    protected $dontFlash = [
        'current_password',
        'password',
        'password_confirmation',
    ];

    public function register(): void
    {
        $this->reportable(function (Throwable $e) {
            //
        });
    }
}

FormSpamGuard dans les contrôleurs

use Cotiga\SpamGuard\Services\FormSpamGuard;

class ContactController extends Controller
{
    public function store(ContactRequest $request, FormSpamGuard $guard)
    {
        if ($guard->isSpam($request->mel, $request->ip(), $request->only(['nom', 'tel', 'msg']))) {
            return $this->fakeSuccessResponse($request);
        }
        // traitement normal...
    }
}

Vues d'erreur

Le package fournit une vue spam-guard::errors.generic (HTML autonome, sans layout).

Pour la personnaliser avec le layout de votre site :

php artisan vendor:publish --tag=spam-guard-views

Les vues sont copiées dans resources/views/vendor/spam-guard/errors/. Vous pouvez aussi créer resources/views/errors/generic.blade.php directement dans votre app — elle sera automatiquement prioritaire.

Tables créées

Table Description
spam_guard_banned_ips IPs bannies automatiquement
spam_guard_errors Erreurs HTTP loguées
spam_guard_error_ignoreds Patterns d'URL à ignorer
spam_guard_refused_contacts Soumissions de formulaires refusées

Variables d'environnement

SPAM_GUARD_ALERT_EMAIL=support@example.com
SPAM_GUARD_ALERT_THRESHOLD=10
SPAM_GUARD_BAN_THRESHOLD=30