activate()) keresztül kezeljük, mert a * Pennant purge() minden scope-ra töröl egy adott flag névre - egy admin * mentés (pl. enabled kikapcsolása) így törölné az explicit felülbírálásokat * is. Ezért az override-okat saját táblában tároljuk, a resolver pedig ezt * nézi meg elsőként; a Pennant tárolója így csak a szabály-alapú * alapértelmezett feloldást cache-eli, amit bármikor biztonságos purge-elni. */ public function registerAll(): void { FeatureFlag::all()->each(function (FeatureFlag $flag) { Feature::define($flag->name, function (?User $user) use ($flag) { if ($user) { $override = FeatureFlagOverride::where('feature_flag_id', $flag->id) ->where('user_id', $user->id) ->first(); if ($override) { return $override->active; } } if (! $flag->enabled) { return false; } if ($flag->stages && ! in_array(config('app.stage'), $flag->stages, true)) { return false; } if ($flag->roles && (! $user || ! $user->hasRole($flag->roles))) { return false; } return true; }); }); } }