inigopascall/spamguard
Laravel package to help detect and block spam in forms and user submissions. Adds simple anti-spam checks and validation hooks to reduce bot signups and junk messages, with easy configuration for common use cases.
FormSubmitted events) for extensibility.config/app.php).SpamGuard::check($request)).@spamguard).FormSubmitted or custom events for post-submission actions (e.g., logging, blocking IPs).throttle) or honeypot fields as a backup.config/spamguard.php) to align with application-specific spam patterns.throttle middleware) if redundant.config/spamguard.php (e.g., adjust rate limits, add custom keywords).use Illuminate\Support\Facades\* changes).composer require inigopascall/spamguard
php artisan vendor:publish --provider="InigoPascall\SpamGuard\SpamGuardServiceProvider"
php artisan vendor:publish --tag=spamguard-config.config/spamguard.php.app/Http/Kernel.php:
protected $routeMiddleware = [
'spamguard' => \InigoPascall\SpamGuard\Facades\SpamGuard::class,
];
Apply to routes: Route::post('/contact', [ContactController::class, 'store'])->middleware('spamguard');.handle():
public function handle()
{
if (SpamGuard::check($this->request)) {
return back()->withErrors(['spam' => 'Submission blocked.']);
}
// Proceed...
}
curl or Postman) and legitimate submissions.php artisan spamguard:log (if enabled).php artisan spamguard:update-rules).storage/logs/spamguard.log (enable via config).php artisan spamguard:log to review blocked submissions.spamguard).cache driver).SpamGuard::rateLimit() with Redis-backed logic.| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Package bug (e.g., rule logic) | False positives/negatives | Roll back to previous spam logic. |
| Redis failure (if used) | Rate limiting stops working | Fallback to in-memory limits (less accurate). |
| Database connection issues | Logs fail to persist | Disable logging or use file-based logs. |
| High traffic overload | Memory exhaustion | Increase PHP memory limit or use Redis. |
spamguard.php.php artisan spamguard:log).How can I help you explore Laravel packages today?