94 lines
3.6 KiB
PHP
94 lines
3.6 KiB
PHP
<?php
|
|
|
|
namespace App\Filament\Resources\FeatureFlags\Tables;
|
|
|
|
use App\Models\FeatureFlag;
|
|
use App\Models\FeatureFlagOverride;
|
|
use App\Models\User;
|
|
use Filament\Actions\Action;
|
|
use Filament\Actions\BulkActionGroup;
|
|
use Filament\Actions\DeleteBulkAction;
|
|
use Filament\Actions\EditAction;
|
|
use Filament\Forms\Components\Radio;
|
|
use Filament\Forms\Components\Select;
|
|
use Filament\Tables\Columns\TextColumn;
|
|
use Filament\Tables\Columns\ToggleColumn;
|
|
use Filament\Tables\Table;
|
|
use Laravel\Pennant\Feature;
|
|
|
|
class FeatureFlagsTable
|
|
{
|
|
public static function configure(Table $table): Table
|
|
{
|
|
return $table
|
|
->columns([
|
|
TextColumn::make('name')
|
|
->label('Kulcs')
|
|
->searchable()
|
|
->sortable(),
|
|
TextColumn::make('label')
|
|
->label('Megnevezés')
|
|
->searchable(),
|
|
ToggleColumn::make('enabled')
|
|
->label('Bekapcsolva'),
|
|
TextColumn::make('stages')
|
|
->label('Stage-ek')
|
|
->badge()
|
|
->placeholder('mind'),
|
|
TextColumn::make('roles')
|
|
->label('Szerepkörök')
|
|
->badge()
|
|
->placeholder('mind'),
|
|
TextColumn::make('updated_at')
|
|
->label('Módosítva')
|
|
->dateTime()
|
|
->sortable(),
|
|
])
|
|
->recordActions([
|
|
EditAction::make(),
|
|
Action::make('userOverride')
|
|
->label('Egyéni felülbírálás')
|
|
->icon('heroicon-o-user')
|
|
->form([
|
|
Select::make('user_id')
|
|
->label('Felhasználó')
|
|
->searchable()
|
|
->options(fn () => User::pluck('name', 'id'))
|
|
->required(),
|
|
Radio::make('override')
|
|
->label('Állapot')
|
|
->options([
|
|
'inherit' => 'Örökölt (alapértelmezett szabály érvényes)',
|
|
'on' => 'Bekapcsolva',
|
|
'off' => 'Kikapcsolva',
|
|
])
|
|
->default('inherit')
|
|
->required(),
|
|
])
|
|
->action(function (array $data, FeatureFlag $record) {
|
|
$user = User::findOrFail($data['user_id']);
|
|
|
|
if ($data['override'] === 'inherit') {
|
|
FeatureFlagOverride::where('feature_flag_id', $record->id)
|
|
->where('user_id', $user->id)
|
|
->delete();
|
|
} else {
|
|
FeatureFlagOverride::updateOrCreate(
|
|
['feature_flag_id' => $record->id, 'user_id' => $user->id],
|
|
['active' => $data['override'] === 'on'],
|
|
);
|
|
}
|
|
|
|
// csak ennek az egy usernek a gyorsítótárazott Pennant-feloldását
|
|
// érvénytelenítjük, a többi felhasználót nem érinti
|
|
Feature::for($user)->forget($record->name);
|
|
}),
|
|
])
|
|
->toolbarActions([
|
|
BulkActionGroup::make([
|
|
DeleteBulkAction::make(),
|
|
]),
|
|
]);
|
|
}
|
|
}
|