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: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-05-20 10:59 UTC

This package is auto-updated.

Last update: 2026-05-20 11:16:57 UTC


README

Package Laravel — antispam formulaires et gestion des erreurs HTTP.

  • Rate limiting par IP
  • Filtrage email : TLD, domaine, patterns suspects
  • Détection nom charabia, message générique de bot
  • 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

Configuration

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

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

Handler d'exceptions

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

<?php

namespace App\Exceptions;

use Cotiga\SpamGuard\Exceptions\SpamGuardHandler;

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

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.

Les vues spécifiques (errors/404.blade.php, errors/500.blade.php…) restent entièrement dans votre app.

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', 'msg']))) {
            return back()->with('error', 'Votre message n\'a pas pu être envoyé.');
        }
        // ...
    }
}

Tables créées

Table Description
banned_ips IPs bannies automatiquement
spam_guard_errors Erreurs HTTP loguées
error_ignored Patterns d'URL à ignorer
refused_contacts Soumissions de formulaires refusées

Migration depuis une installation manuelle (ex : cotifr)

Si le site dispose déjà des tables errors, banned_ips, etc., les renommer pour correspondre au package :

RENAME TABLE `errors` TO `spam_guard_errors`;
-- banned_ips, error_ignored, refused_contacts → noms identiques, aucune action requise

Supprimer ensuite les anciens modèles de app/Models/ (BannedIp, Error, ErrorIgnored, RefusedContact) et mettre à jour les use dans les contrôleurs.

Variables d'environnement

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