value('value') ?? $default; }); } public static function set(string $key, ?string $value): void { static::where('key', $key)->update(['value' => $value]); Cache::forget("setting.{$key}"); } public static function clearCache(): void { $keys = static::pluck('key'); foreach ($keys as $key) { Cache::forget("setting.{$key}"); } } /** * Prüft ob ein Feature für den gegebenen User sichtbar ist. * Admin sieht immer alles. */ public static function isFeatureVisibleFor(string $feature, User $user): bool { if ($user->isAdmin()) { return true; } $key = "visibility_{$feature}_{$user->role->value}"; return static::get($key, '1') === '1'; } }