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.
Damit diese Methode positive Rückmeldungen geben kann, muss der CMSControl_Captcha_HMAC zwingend in Ihrer Umgebungskonfiguration hinterlegt sein. Fehlt dieser Schlüssel, wird das Feature aus Sicherheitsgründen automatisch deaktiviert.
Nachfolgend finden Sie Implementierungsbeispiele für verschiedene Kontexte:
{% if FeatureController.isCaptchaEnabled() %}
<!-- Captcha-Formular anzeigen -->
<div class="captcha-container">
<input type="text" name="captcha" placeholder="Captcha eingeben">
</div>
{% else %}
<!-- Kein Captcha verfügbar -->
<p class="text-muted">Captcha temporär nicht verfügbar</p>
{% endif %}<?php
use Crispy\Controllers\FeatureController;
$featureController = new FeatureController();
if ($featureController->isCaptchaEnabled()) {
// Logik für aktiviertes Captcha
$view->assign('showCaptcha', true);
} else {
// Fallback-Logik oder Logging
Logger::warning("Captcha inaktiv: Limit erreicht oder Konfiguration fehlt.");
}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.