Fix WAF whitelist table + stabilize notifications
This commit is contained in:
@@ -8,14 +8,14 @@ use App\Models\Setting;
|
|||||||
use App\Services\Agent\AgentClient;
|
use App\Services\Agent\AgentClient;
|
||||||
use Exception;
|
use Exception;
|
||||||
use Filament\Actions\Action;
|
use Filament\Actions\Action;
|
||||||
use Filament\Forms\Components\Select;
|
|
||||||
use Filament\Forms\Components\TextInput;
|
|
||||||
use Filament\Notifications\Notification;
|
|
||||||
use Filament\Tables\Columns\TextColumn;
|
|
||||||
use Filament\Actions\Concerns\InteractsWithActions;
|
use Filament\Actions\Concerns\InteractsWithActions;
|
||||||
use Filament\Actions\Contracts\HasActions;
|
use Filament\Actions\Contracts\HasActions;
|
||||||
use Filament\Schemas\Concerns\InteractsWithSchemas;
|
use Filament\Forms\Components\Select;
|
||||||
use Filament\Schemas\Contracts\HasSchemas;
|
use Filament\Forms\Components\TextInput;
|
||||||
|
use Filament\Forms\Concerns\InteractsWithForms;
|
||||||
|
use Filament\Forms\Contracts\HasForms;
|
||||||
|
use Filament\Notifications\Notification;
|
||||||
|
use Filament\Tables\Columns\TextColumn;
|
||||||
use Filament\Tables\Concerns\InteractsWithTable;
|
use Filament\Tables\Concerns\InteractsWithTable;
|
||||||
use Filament\Tables\Contracts\HasTable;
|
use Filament\Tables\Contracts\HasTable;
|
||||||
use Filament\Tables\Table;
|
use Filament\Tables\Table;
|
||||||
@@ -23,28 +23,18 @@ use Illuminate\Support\Arr;
|
|||||||
use Livewire\Attributes\On;
|
use Livewire\Attributes\On;
|
||||||
use Livewire\Component;
|
use Livewire\Component;
|
||||||
|
|
||||||
class WafWhitelistTable extends Component implements HasTable, HasSchemas, HasActions
|
class WafWhitelistTable extends Component implements HasTable, HasForms, HasActions
|
||||||
{
|
{
|
||||||
use InteractsWithTable;
|
use InteractsWithTable;
|
||||||
use InteractsWithSchemas { cacheSchema as protected filamentCacheSchema; }
|
use InteractsWithForms;
|
||||||
use InteractsWithActions;
|
use InteractsWithActions;
|
||||||
|
|
||||||
protected function cacheSchema(string $name, \Filament\Schemas\Schema|\Closure|null $schema = null): ?\Filament\Schemas\Schema
|
|
||||||
{
|
|
||||||
return $this->filamentCacheSchema($name, $schema);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[On('waf-whitelist-updated')]
|
#[On('waf-whitelist-updated')]
|
||||||
public function refreshWhitelist(): void
|
public function refreshWhitelist(): void
|
||||||
{
|
{
|
||||||
$this->resetTable();
|
$this->resetTable();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function makeFilamentTranslatableContentDriver(): ?\Filament\Support\Contracts\TranslatableContentDriver
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function render()
|
public function render()
|
||||||
{
|
{
|
||||||
return view('livewire.admin.waf-whitelist-table');
|
return view('livewire.admin.waf-whitelist-table');
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ namespace App\Providers;
|
|||||||
|
|
||||||
use App\Models\Domain;
|
use App\Models\Domain;
|
||||||
use App\Observers\DomainObserver;
|
use App\Observers\DomainObserver;
|
||||||
|
use Filament\Support\Facades\FilamentView;
|
||||||
|
use Filament\View\PanelsRenderHook;
|
||||||
use Illuminate\Support\ServiceProvider;
|
use Illuminate\Support\ServiceProvider;
|
||||||
|
|
||||||
class AppServiceProvider extends ServiceProvider
|
class AppServiceProvider extends ServiceProvider
|
||||||
@@ -25,5 +27,10 @@ class AppServiceProvider extends ServiceProvider
|
|||||||
|
|
||||||
// Note: AuthEventListener is auto-discovered by Laravel 11+
|
// Note: AuthEventListener is auto-discovered by Laravel 11+
|
||||||
// Do not manually subscribe - it causes duplicate audit log entries
|
// Do not manually subscribe - it causes duplicate audit log entries
|
||||||
|
|
||||||
|
FilamentView::registerRenderHook(
|
||||||
|
PanelsRenderHook::SCRIPTS_AFTER,
|
||||||
|
fn (): string => view('filament.partials.notifications-refresh')->render(),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
<script data-navigate-once>
|
||||||
|
document.addEventListener('livewire:init', () => {
|
||||||
|
if (!window.Livewire || !window.Livewire.hook || !window.Livewire.dispatch) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.Livewire.hook('commit', ({ component, succeed }) => {
|
||||||
|
if (component?.name === 'notifications') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
succeed(() => {
|
||||||
|
window.Livewire.dispatch('notificationsSent');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
Reference in New Issue
Block a user