⚡ Gelistet auf Filament Marketplace · Open Source · MIT · Filament 5

ActionGuard: Kritische Aktionen stoppen, bevor sie ausgeführt werden.

ActionGuard zeigt öffentlich nachvollziehbar, wie ich fachliche Invarianten als explizite, testbare Regeln umsetze. Das eigenständig nutzbare Open-Source-Plugin prüft Voraussetzungen unmittelbar vor Filament-Aktionen und geschützten Modelländerungen.

Vorabprüfungen

Pflichtfelder, Beziehungen, Medienbedingungen 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.

⚡ Auf Filament Marketplace ansehen → GitHub Repository ↗
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.

Geschäftsregeln direkt an Models definieren und mit einem Einzeiler in Filament verknüpfen.

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

Welche Schutzebene übernimmt welche Aufgabe?

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
Domänen & Praxisbeispiele

Architekturprinzipien in realen Geschäftsprozessen.

Dieselben fachlichen Schutzmechanismen lassen sich auf unterschiedliche Branchen übertragen.

01
🛒

E-Commerce

Ein Produkt darf erst veröffentlicht werden, wenn SKU, Preis, Lieferant und Produktbild vollständig sind. Berechtigung allein garantiert noch keinen fachlich korrekten Prozess.

02

Druckindustrie

Produktionsfreigaben benötigen geprüfte Druckdaten, Material, Produktionszeit, Versandart und Kundenfreigabe. Falsche Zustände können hier unmittelbar reale Kosten auslösen.

03

Verlage & Medien

Veröffentlichungen bleiben blockiert, bis Inhalte, Redaktion, Metadaten und Bildrechte geprüft sind. Produktionsübergaben und spätere Änderungen folgen klaren Zustandsregeln.

04

Workflow & Freigaben

Statuswechsel, Freigaben, Exporte und irreversible Schritte werden erst ausgeführt, wenn die fachlichen Voraussetzungen nachweisbar erfüllt sind.

05

Integrationen

APIs, Queues und externe Partner werden über stabile Verträge angebunden. Fachliche Entscheidungen bleiben von konkreten Transportwegen und Framework-Details getrennt.

06

Nachvollziehbarer Betrieb

Strukturierte Ereignisse, kontrollierte Fehlerbehandlung und datensparsame Protokollierung machen Entscheidungen im Betrieb nachvollziehbar.

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

Explizit & testbar

Klare Schnittstellen, geringe Kopplung und Geschäftsregeln, die sich gezielt und aussagekräftig prüfen lassen.

Sicher im Fehlerfall

Fail-Closed bei kritischen Aktionen, kontrollierte Fehlerbehandlung und früh sichtbare Abweichungen.

Nachvollziehbar

Verständliche Architekturentscheidungen, strukturierte Betriebsereignisse und öffentlich einsehbarer Quellcode.

ActionGuard FAQ

Technische Fragen zu ActionGuard. 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.

Wo finde ich den Autor und weitere Projekte?

Das berufliche Profil von Aleksey Krivonos ist auf LinkedIn verfügbar. ActionGuard und weitere öffentlich einsehbare Arbeiten sind auf GitHub.

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-Aktionen 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.

ActionGuard ist Open Source (MIT).

Entwickelt von Aleksey Krivonos als Nachweis für pragmatische, robuste Enterprise-Architektur in Laravel und Filament.

⚡ Auf Filament Marketplace ansehen → GitHub Repository ↗ Profil von Aleksey Krivonos →