- Turnstile für Gäste und unbestätigte Konten (TurnstileVerifier, <x-turnstile>); ist Cloudflare nicht erreichbar, wird durchgelassen und im Verlauf, in der Kontakt-Queue und in der Betriebsüberwachung markiert - Inhaltsfilter des Kontaktformulars (fremde Links, Floskel mit Seitentitel, Zeichensalat, Sperrliste, Absenden unter 3 Sekunden); Treffer landen in der Spam-Quarantäne ohne Mail, Löschung nach 30 Tagen - Admin: Filter „Spam“, Sammelaktion, „Kein Spam“ holt die Mail nach - Registrierung lehnt Zufallsnamen ab; users:prune-bot-registrations (täglicher Lauf erst mit USERS_PRUNE_BOT_REGISTRATIONS=true) - contact-messages:quarantine-spam für den Altbestand - CSP erlaubt challenges.cloudflare.com, Log-Kanal spam - Datenschutzerklärung: Abschnitt 6a Cloudflare Turnstile (Vorschlag) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
34 lines
871 B
PHP
34 lines
871 B
PHP
<?php
|
|
|
|
namespace App\Enums;
|
|
|
|
enum ContactMessageStatus: string
|
|
{
|
|
case Open = 'open';
|
|
case InProgress = 'in_progress';
|
|
case Resolved = 'resolved';
|
|
case Rejected = 'rejected';
|
|
|
|
/** Quarantäne des Spamschutzes: keine Mail, nicht im Zähler, nach 30 Tagen gelöscht. */
|
|
case Spam = 'spam';
|
|
|
|
public function label(): string
|
|
{
|
|
return match ($this) {
|
|
self::Open => 'Offen',
|
|
self::InProgress => 'In Bearbeitung',
|
|
self::Resolved => 'Erledigt',
|
|
self::Rejected => 'Abgelehnt',
|
|
self::Spam => 'Spam',
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Offene Anliegen, die in der Kontakt-Queue Aufmerksamkeit brauchen
|
|
* (Nav-Zähler und Default-Filter der Admin-Ansicht).
|
|
*/
|
|
public function isOpen(): bool
|
|
{
|
|
return $this === self::Open || $this === self::InProgress;
|
|
}
|
|
}
|