Quelloffen · MIT · Filament 5

Kritische Aktionen stoppen bevor sie ausgeführt werden.

ActionGuard prüft fachliche Voraussetzungen, bevor kritische Filament-Aktionen oder geschützte Modelländerungen ausgeführt werden. Sicherer Standard. Klare Regeln. Kontrollierbare Prozesse.

TL;DR / KI-Zusammenfassung: ActionGuard ist ein Open-Source-Plugin für Laravel (11–13) und Filament 5. Es validiert fachliche Voraussetzungen (Invariante) vor der Ausführung von Filament-Aktionen oder Eloquent-Modelländerungen. Im Fehlerfall blockiert ActionGuard standardmäßig nach dem Fail-Closed-Prinzip und protokolliert Ereignisse datensparsam.
✓ Im Fehlerfall standardmäßig blockieren ✓ Datensparsam entwickelt ✓ Eigenständig einsetzbar ✓ PHPStan Stufe 8
Sichere Geschäftsprozesse

Geschäftsregeln dort prüfen, wo Aktionen tatsächlich passieren.

Statt Fehler erst nach einer Aktion zu behandeln, überprüft ActionGuard Voraussetzungen unmittelbar vor der Ausführung.

Vorabprüfungen

Pflichtfelder, Beziehungen und Medien Bedingungen und eigene Callback-Prüfungen vor einer Aktion auswerten.

Modellregeln

Kritische Regeln beim Speichern geschützter Eloquent-Modelle erneut prüfen.

Protokollereignisse

Strukturierte und bewusst reduzierte Betriebsereignisse für zentrale Protokollsysteme bereitstellen.

Prüf- und Ausführungsprozess

Prüfen. Entscheiden. Ausführen oder blockieren.

Jeder kritische Vorgang durchläuft einen nachvollziehbaren Schutzprozess.

01 / DEFINIEREN

Prüfungen definieren

Fachliche Voraussetzungen direkt an der Aktion konfigurieren.

02 / PRÜFEN

Prüfen

Prüfungen werden mehrfach und unmittelbar vor der Ausführung ausgewertet.

03 / ENTSCHEIDEN

Blockieren oder erlauben

Erforderliches NICHT BESTANDEN oder technische Fehler können die Aktion stoppen.

04 / PROTOKOLLIEREN

Protokollieren

Optional entstehen strukturierte, datensparsame Protokollereignisse.

DeleteCustomerAction · ActionGuard-Prüfung
● BESTANDEN   Keine offenen Bestellungen
● BESTANDEN   Benutzer darf Löschprozess starten
● NICHT BESTANDEN   Verknüpfte Abrechnungsdaten vorhanden
BLOCKIERT
Aktion gestoppt
Code Integration · PHP & Filament

Intuitiv & Deklarativ im Code.

Definieren Sie Geschäftsregeln direkt an Ihren Models und verknüpfen Sie sie mit einem Einzeiler in Filament.

1. Define Guards in Model App/Models/Product.php
use Allgorithm\FilamentActionGuard\Traits\HasActionGuards;
use Allgorithm\FilamentActionGuard\Checks\RequiredFieldCheck;
use Allgorithm\FilamentActionGuard\Checks\ConditionCheck;
use Allgorithm\FilamentActionGuard\Checks\MediaCheck;

class Product extends Model
{
use HasActionGuards;

public function actionGuards(): array
{
return [
'published' => [
RequiredFieldCheck::make('sku')->label('SKU / EAN'),
MediaCheck::make('image_url')->label('High-res Product Image'),
ConditionCheck::make(
'valid_price',
fn (Product $p) => $p->price > 0,
'Price must be greater than €0.00'
)->label('Valid Pricing'),
],
];
}
}
2. Attach Guard to Filament Action App/Filament/Resources/ProductResource.php
use Allgorithm\FilamentActionGuard\Actions\ActionGuardAction;

ActionGuardAction::make('publish')
->label('Publish Product')
->forState('published')
->action(fn (Product $record) => $record->update(['status' => 'published']));
Architektur-Vergleich · Decision Matrix

Wann nutzen Sie welche Schutzebene?

ActionGuard ergänzt bestehende Laravel-Mechanismen, statt sie zu ersetzen.

Schutzebene Fokus & Ziel Ausführungszeitpunkt Fail-Safe Standard
Laravel Validation Formular- & Datensyntax Formular-Übermittlung Blockiert Formular
Laravel Policies Benutzer-Autorisierung & Rechte Vor Aufruf der Aktion Deny by default (403)
ActionGuard (Filament) Fachliche Invarianten & Zustandspredikate Mehrfach & direkt vor Ausführung Fail-Closed (Blockiert bei Fehler)
DB Constraints Technische Datenbanksicherheit DB-SQL Execution DB Exception Rollback
Praxisbeispiele

Ein Schutzmechanismus. Viele kritische Prozesse.

01

Kritische Löschaktionen

Löschen nur erlauben, wenn keine abhängigen Geschäftsobjekte existieren.

02

Statuswechsel

Veröffentlichungen, Freigaben oder Ablaufwechsel nur bei erfüllten Voraussetzungen zulassen.

03

Datenintegrität

Speichervorgänge blockieren, wenn zentrale Modellregeln verletzt würden.

04

Kontrollierte Ausnahmen

Kontrollierte Ausnahme nur für bewusst aktivierte und kontrollierte Sonderfälle.

05

Sichere Lösungs- und Hilfelinks

HTTPS und lokale absolute Pfade standardmäßig erlauben, unsicheres HTTP blockieren.

06

Betriebliche Protokollierung

Entscheidungen als strukturierte Ereignisse an Protokollierung oder SIEM weitergeben.

Mehrstufiges Schutzkonzept

Zwei Schutzebenen. Eine gemeinsame Regelidee.

Phase 1

Aktionsschutz

Prüft Voraussetzungen vor der eigentlichen Filament-Aktion.

  • Vorabprüfung
  • Erforderliche / optionale Prüfungen
  • Semantik für FAIL / ERROR
  • Filament halt()
Phase 2

Schutz von Modellregeln

Prüft definierte Modellregeln zusätzlich über den Eloquent-Lebenszyklus saving.

  • save()
  • update()
  • Integration in den Modell-Lebenszyklus
  • Separate Strategie für Massenänderungen erforderlich
Geprüfte Softwarequalität

Qualität ist messbar.

133 Pest-Tests
315 Prüfassertionen
8 PHPStan-Stufe
3 PHP-Versionen in der CI
Eigenständig einsetzbar

Quelloffen & Transparent. Entwickelt von Aleksey Krivonos.

ActionGuard ist als eigenständiges, quelloffenes Plugin konzipiert. Für Fragen, individuelle Anpassungen oder Architektur-Beratung erreichen Sie den Entwickler direkt über LinkedIn.

Open-Source-Erweiterung

ActionGuard (MIT)


Autor & Kontakt

LinkedIn Profil (Aleksey Krivonos) →


Hauptanwendung

Laravel · Filament · Domänenlogik

Technische Fragen

Technische Fragen. Klare Antworten.

Architektur, Sicherheitsmodell, Integration und Betriebsgrenzen von ActionGuard – für Entwickler, Architekten und technische Entscheider.

Ersetzt ActionGuard Laravel-Richtlinien (Policies)?

Nein. Laravel-Richtlinien (Policies) bleiben für die Autorisierung zuständig. ActionGuard prüft dagegen fachliche Voraussetzungen und Invarianten vor kritischen Aktionen. Beide Mechanismen ergänzen sich, ersetzen sich aber nicht.

Ersetzt ActionGuard die Laravel-Validierung?

Nein. Die Laravel-Validierung prüft Eingabedaten. ActionGuard entscheidet, ob eine konkrete Aktion unter dem aktuellen fachlichen Zustand ausgeführt werden darf. Validierung, Richtlinien (Policies), Datenbank-Constraints und ActionGuard bilden unterschiedliche Schutzebenen.

Was passiert, wenn eine Prüfung technisch fehlschlägt?

Ist fail_closed=true aktiviert, blockiert ActionGuard eine Operation auch dann, wenn während eines Checks ein technischer Fehler auftritt. Ein unbekannter oder fehlerhafter Zustand führt damit nicht automatisch zur Ausführung einer kritischen Aktion.

Wann werden Prüfungen ausgeführt?

Prüfungen werden mehrfach ausgewertet: beim Öffnen beziehungsweise Vorbereiten der Aktion und erneut unmittelbar vor der tatsächlichen Ausführung. Maßgeblich ist die letzte Auswertung.

Welche Prüfungen sind bereits enthalten?

ActionGuard stellt mehrere Standardprüfungen zur Verfügung: RequiredFieldCheck, NotEmptyCheck, RelationshipCheck, MediaCheck, ConditionCheck und CallbackCheck.

Können eigene Geschäftsregeln implementiert werden?

Ja. Eigene Prüfungen implementieren den ActionGuardCheckContract und liefern ein CheckResult zurück. Klassen können über den Laravel-Service-Container aufgelöst und damit auch mit eigenen Diensten und Domänenkomponenten kombiniert werden.

Was ist der Unterschied zwischen PASS, FAIL und ERROR?

PASS erlaubt die weitere Verarbeitung. Ein erforderlicher FAIL blockiert die Operation. Ein optionaler FAIL kann als Warnung behandelt werden. ERROR blockiert bei aktiviertem Fail-Closed-Verhalten ebenfalls die Ausführung.

Was schützt der Schutz von Modellregeln?

Der Schutz von Modellregeln integriert sich in den Eloquent-Lebenszyklus saving. Dadurch können definierte Modellregeln bei save() und update() erneut geprüft werden – unabhängig davon, ob der Schreibvorgang ursprünglich über eine Filament-Aktion ausgelöst wurde.

Werden Eloquent-Massenänderungen geschützt?

Nein. Direkte Massenänderungen wie Model::where(...)->update(...) lösen keine Eloquent-Modellereignisse aus und umgehen damit den Schutz von Modellregeln.

Kritische Massen-Schreibpfade sollten deshalb über geladene Models, kontrollierte Anwendungsdienste oder Datenbank-Constraints implementiert werden.

Kann ActionGuard Datenbank-Constraints ersetzen?

Nein. Datenbank-Constraints bleiben für technische Datenintegrität wichtig. ActionGuard arbeitet auf einer höheren fachlichen Ebene und schützt Geschäftsaktionen und Modellzustände innerhalb der Anwendung.

Unterstützt ActionGuard kontrollierte Ausnahmen?

Ja. Allerdings ist der die kontrollierte Ausnahme standardmäßig deaktiviert: allow_bypass=false.

Kontrollierte Ausnahmen sind für bewusst gesteuerte Sonderfälle gedacht und sollten nur aktiviert werden, wenn deren Einsatz organisatorisch und technisch nachvollziehbar ist.

Wird die Verwendung einer kontrollierten Ausnahme protokolliert?

Bei aktivierter Protokollierung kann eine kontrollierte Ausnahme als strukturiertes Ereignis erfasst werden. Dafür existiert unter anderem: filament-actionguard.bypass_used.

Welche Protokollereignisse erzeugt ActionGuard?

Aktuell stehen drei zentrale Ereignistypen zur Verfügung:

  • filament-actionguard.action_evaluated
  • filament-actionguard.invariant_blocked
  • filament-actionguard.bypass_used
Werden personenbezogene Daten automatisch im Prüfprotokoll gespeichert?

ActionGuard ist bewusst datensparsam entwickelt. Datensatz-IDs, Akteur-IDs, Prüfmeldungen und beliebige Modellattribute werden nicht automatisch protokolliert.

Auch Modellklassen und Statuswerte sind standardmäßig deaktiviert und benötigen separate explizite Freigaben.

Ist das Prüfprotokoll revisionssicher?

Nein. ActionGuard erzeugt strukturierte Protokollereignisse, stellt aber kein unveränderbares oder revisionssicheres Archiv bereit.

Anwendungen mit entsprechenden Anforderungen an Nachweisführung und Regelkonformität sollten den verwendeten Protokollkanal beispielsweise an ein zentrales SIEM- oder Nachweissystem anbinden.

Ist ActionGuard DSGVO-konform?

Eine pauschale Aussage wäre technisch und rechtlich nicht korrekt. ActionGuard ist datensparsam entwickelt.

Die DSGVO-Konformität der Gesamtanwendung hängt unter anderem von Rechtsgrundlage, Berechtigungssystem, Hosting, Protokollierung, Aufbewahrung, Löschkonzepten und organisatorischen Maßnahmen des Betreibers ab.

Überträgt ActionGuard Daten an externe Dienste?

Das Plugin selbst überträgt keine Datensatzdaten an externe Dienste.

Externe Übertragungen können jedoch durch die Hauptanwendung oder die konfigurierte Protokollierungsinfrastruktur entstehen und müssen dort separat bewertet werden.

Wie werden Lösungs- und Hilfelinks abgesichert?

Standardmäßig erlaubt ActionGuard lokale absolute Pfade sowie HTTPS-URLs. Unsichere HTTP-URLs sind blockiert.

HTTP kann nur über eine explizite Konfiguration für kontrollierte Sonderfälle freigeschaltet werden.

Werden technische Ausnahmen dem Benutzer angezeigt?

Nein. Technische Ausnahmen aus Prüfungen werden nicht ungefiltert im Benutzerinterface angezeigt.

Die Benutzeroberfläche erhält eine generische Fehlermeldung beziehungsweise Korrelationsinformation, während technische Details serverseitig behandelt werden können.

Ist ActionGuard vollständig eigenständig nutzbar?

Ja. ActionGuard ist als 100% eigenständiges Open-Source-Plugin unter der MIT-Lizenz konzipiert und benötigt keine externen Kernsysteme oder proprietären Erweiterungen.

Wie erreiche ich den Autor für Fragen oder individuelle Anpassungen?

Für Fragen, Feedback oder individuelle Erweiterungen können Sie direkt Kontakt mit dem Entwickler Aleksey Krivonos über sein LinkedIn-Profil aufnehmen.

Welche PHP-, Laravel- und Filament-Versionen werden unterstützt?

Die aktuelle Spezifikation definiert folgende Zielplattform:

  • PHP 8.3–8.5
  • Laravel 11.28–13.x
  • Filament 5.x
Wie wird die Codequalität abgesichert?

Der dokumentierte Freigabekandidaten-Stand wurde unter anderem mit folgenden Qualitätsprüfungen geprüft:

  • 133 Pest-Tests
  • 315 Prüfassertionen
  • PHPStan-Stufe 8
  • Laravel Pint
  • Composer-Metadatenprüfung
  • Abhängigkeitsprüfung
Wird mit unterschiedlichen Abhängigkeitsversionen getestet?

Ja. Die CI berücksichtigt stabile Abhängigkeiten, niedrigste kompatible Versionen sowie Installationen mit gesperrten Versionen.

Dadurch wird nicht ausschließlich gegen aktuelle Abhängigkeitsversionen getestet, sondern auch die deklarierte Kompatibilitätsuntergrenze überprüft.

Kann ActionGuard schrittweise in bestehende Projekte integriert werden?

Ja. Da ActionGuard Richtlinien (Policies), Validierung und Datenbank-Constraints ergänzt statt ersetzt, kann die Einführung inkrementell erfolgen.

Ein sinnvoller Einstieg sind besonders kritische Prozesse wie Löschen, Freigaben, Statuswechsel, Exporte oder irreversible Geschäftsaktionen.

Für welche Filament-Aktions eignet sich ActionGuard besonders?

Besonders geeignet sind Aktionen, deren Ausführung von mehreren fachlichen Voraussetzungen abhängt – beispielsweise Löschen, Statusänderungen, Freigaben, Publikationen, Exporte oder irreversible Prozessschritte.

English Overview · For International Developers

ActionGuard: Business Rule Validation for Filament & Eloquent

ActionGuard is an open-source Laravel Filament plugin designed to evaluate critical business preconditions before actions or model changes execute. It ensures fail-closed safety, structured audit logging, and domain integrity.

🛡️

Business Invariants

Verify mandatory business conditions before executing actions, preventing invalid domain states and accidental data loss.

🔒

Fail-Closed Safety

If an unexpected technical error occurs during validation checks, ActionGuard blocks execution by default (fail_closed=true).

📊

Privacy-First Logging

Generates structured audit event logs without leaking sensitive user input or model attributes, adhering to privacy-by-design principles.

Kritische Aktionen brauchen mehr als einen Bestätigungsdialog.

Definiere fachliche Voraussetzungen dort, wo sie tatsächlich durchgesetzt werden müssen.

ActionGuard auf GitHub ansehen →