Menue folgt auch den Schaltern des Mandanten

Bisher blendete das Menue nur aus, was der Betreiber gesperrt hatte. Hat
der Mandant selbst eine Funktion abgeschaltet - etwa "PayPal anbieten" in
den Mandant-Einstellungen - blieb der Menuepunkt stehen und fuehrte auf
eine Seite ohne Zweck.

app_feature_available() prueft nun beide Ebenen, app_feature_tenant_switch()
haelt die Zuordnung Funktion -> Mandanten-Schalter. Navigation und Anleitung
nutzen die neue Pruefung; paypal-zuordnung.php sperrt sich beim direkten
Aufruf ebenfalls und verweist dabei auf die Mandant-Einstellungen statt auf
den Betreiber.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-20 23:16:30 +02:00
co-authored by Claude Opus 5
parent d24ee9bf91
commit 3f6866e075
5 changed files with 110 additions and 12 deletions
+5 -3
View File
@@ -31,8 +31,10 @@ if ($saasNavUser !== null && function_exists('saas_list_user_memberships')) {
}
}
// Vom Betreiber gesperrte Funktionen erscheinen gar nicht erst im Menue -
// ein Menuepunkt, der nur zu einer Absage fuehrt, ist schlechter als keiner.
// Gesperrte Funktionen erscheinen gar nicht erst im Menue - ein Menuepunkt,
// der nur zu einer Absage fuehrt, ist schlechter als keiner. Geprueft werden
// beide Ebenen: die Freischaltung durch den Betreiber und der eigene Schalter
// des Mandanten in den Mandant-Einstellungen (z. B. "PayPal anbieten").
require_once __DIR__ . '/app/features.php';
$saasNavTenantId = $saasNavUser !== null ? (int)$saasNavUser['tenant_id'] : 0;
$saasNavFeature = static function (string $key) use ($saasNavTenantId): bool {
@@ -40,7 +42,7 @@ $saasNavFeature = static function (string $key) use ($saasNavTenantId): bool {
return true;
}
return app_feature_enabled(app_db_pdo(), $saasNavTenantId, $key);
return app_feature_available(app_db_pdo(), $saasNavTenantId, $key);
};
// Das Back-Office war bisher nur ueber die direkte URL erreichbar. Es ist die