Search Documentation

Search for pages and headings in the documentation

FeatureController

Der FeatureController fungiert als zentrale Instanz für die Verwaltung von Feature-Flags und Lizenzbeschränkungen innerhalb des CrispyCMS-Ökosystems. Er stellt sicher, dass Funktionen nur dann ausgeführt werden, wenn die entsprechenden Lizenzlimits eingehalten werden und die notwendigen Konfigurationen im System hinterlegt sind.

Entwickler nutzen diesen Controller primär, um vor der Ausgabe von sicherheitskritischen oder limitierten Elementen – wie beispielsweise Captchas – eine Validierung durchzuführen.

Namespace

Crispy\Controllers\FeatureController

Verfügbare Methoden

isCaptchaEnabled

Diese Methode gibt einen booleschen Wert (true oder false) zurück und signalisiert, ob die Captcha-Funktionalität aktuell verfügbar ist.

Die Validierung erfolgt in zwei Stufen. Das System prüft zunächst, ob das monatliche Limit für Captcha-Aufrufe im Rahmen der aktuellen Lizenz bereits ausgeschöpft wurde. Anschließend wird verifiziert, ob der für die kryptografische Sicherheit notwendige HMAC-Schlüssel (CMSControl_Captcha_HMAC) in der Konfiguration gesetzt ist. Erst wenn beide Kriterien erfüllt sind, gibt die Methode true zurück.

Nachfolgend finden Sie Implementierungsbeispiele für verschiedene Kontexte:

Visuelle Integration in Templates

Der FeatureController eignet sich hervorragend, um den Status von Systemkomponenten im Frontend oder Dashboard zu visualisieren. Durch die Kombination mit UI-Komponenten können Administratoren schnell erkennen, welche Dienste operativ sind.

Das folgende Beispiel demonstriert, wie Sie den Status mithilfe von Badges anzeigen können:

<div class="feature-status-card p-4 border rounded">
    <h3>Systemstatus: Captcha</h3>
    <div class="status-indicator mt-2">
        {% if FeatureController.isCaptchaEnabled() %}
            {# Anzeige bei aktivem Feature #}
            <Badge variant="secondary" class="bg-blue-500 text-white">
                <Icon name="badge-check" class="size-3 mr-1" />
                Aktiviert
            </Badge>
        {% else %}
            {# Warnung bei inaktivem Feature #}
            <Badge variant="destructive">
                Deaktiviert
            </Badge>
        {% endif %}
    </div>
</div>

In diesem Szenario rendert das System bei erfolgreicher Prüfung ein Aktiviert Badge. Sollte die Prüfung fehlschlagen (z. B. durch fehlenden HMAC-Key), wird stattdessen ein Deaktiviert Badge ausgegeben, um sofortige Aufmerksamkeit zu erregen.