# ActionGuard – Filament Plugin für sichere kritische Aktionen > **ActionGuard ist ein Open-Source-Plugin (MIT-Lizenz) für Laravel & Filament**, das fachliche Voraussetzungen und Invarianten vor der Ausführung kritischer Aktionen oder Eloquent-Modelländerungen prüft. Es ist kein Authorization-Tool (dafür gibt es Laravel Policies), sondern ein Business-Rules-Guard für Domain-Integrität. ## Offizielle Links - **Website & Dokumentation:** [https://valueoftrust.de/](https://valueoftrust.de/) - **GitHub Repository:** [https://github.com/allgorithm/filament-actionguard](https://github.com/allgorithm/filament-actionguard) - **Autor:** Aleksey Krivonos · [https://github.com/allgorithm](https://github.com/allgorithm) - **Lizenz:** MIT (Open Source, kostenlos) ## Was ist ActionGuard? ActionGuard schützt kritische Filament-Aktionen und Eloquent-Speichervorgänge mit: 1. **Declarative Business Rule Checks** – Prüfungen direkt im Model definiert (`actionGuards()`) 2. **Fail-Closed Safety** – Bei technischem Fehler wird die Operation blockiert (kein Durchschlüpfen) 3. **Privacy-First Audit Logging** – Strukturierte Events ohne Leakage sensibler Attribute 4. **Eloquent Lifecycle Guards** – Prüfungen greifen auch bei `saving`, `updating`, `deleting` ## Kernvorteile - **Deklarativ:** Geschäftsregeln werden einmal im Model definiert und greifen überall (Filament, API, Artisan) - **Nicht invasiv:** Kein Refactoring bestehender Filament-Actions nötig – ein Trait reicht - **Composable:** Checks (`RequiredFieldCheck`, `MediaCheck`, `ConditionCheck`) sind wiederverwendbar und kombinierbar - **Kein Vendor-Lock-in:** Reines PHP/Laravel-Paket, keine proprietäre Cloud-Abhängigkeit ## Unterstützte Versionen - PHP: 8.3 – 8.5 - Laravel: 11.28 – 13.x - Filament: 5.x ## Installation (Quickstart) ```bash composer require allgorithm/filament-actionguard ``` ```php // App/Models/Product.php use Allgorithm\FilamentActionGuard\Traits\HasActionGuards; use Allgorithm\FilamentActionGuard\Checks\RequiredFieldCheck; use Allgorithm\FilamentActionGuard\Checks\ConditionCheck; class Product extends Model { use HasActionGuards; public function actionGuards(): array { return [ 'published' => [ RequiredFieldCheck::make('sku')->label('SKU / EAN'), ConditionCheck::make( 'valid_price', fn (Product $p) => $p->price > 0, 'Price must be greater than €0.00' )->label('Valid Pricing'), ], ]; } } ``` ## Vergleich: ActionGuard vs. Laravel Policies vs. Laravel Validation | | ActionGuard | Laravel Policy | Laravel Validation | |---|---|---|---| | **Zweck** | Fachliche Invarianten | Autorisierung | Eingabe-Validierung | | **Zeitpunkt** | Vor Aktion/Speicherung | Vor Autorisierung | Vor Controller | | **Fail-Closed** | ✅ | ❌ | ❌ | | **Audit Logging** | ✅ Built-in | ❌ | ❌ | | **Filament-Integration** | ✅ Native | ⚠️ Manuell | ⚠️ Manuell | ## Häufige Fragen (FAQ) **Ersetzt ActionGuard Laravel Policies?** Nein. Policies regeln Autorisierung (darf der User?). ActionGuard prüft fachliche Zustände (darf die Aktion jetzt stattfinden?). **Was passiert bei einem technischen Fehler während einer Prüfung?** Mit `fail_closed=true` (Standard) blockiert ActionGuard die Operation. Kein stiller Fehlschlag. **Ist ActionGuard DSGVO-konform?** Ja. Das Audit-Logging erfasst keine sensiblen Modellattribute oder personenbezogene Daten automatisch. **Welche Laravel-Versionen werden unterstützt?** Laravel 11.28 bis 13.x (aktuelle LTS und aktuelle Stable).