Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions app/Filament/Admin/Pages/BaseAdminCreateRecord.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?php

namespace App\Filament\Admin\Pages;

use App\Traits\Filament\LogsAdminActivity;
use Filament\Resources\Pages\CreateRecord;

abstract class BaseAdminCreateRecord extends CreateRecord
{
use LogsAdminActivity;

protected function afterCreate(): void
{
static::logAdminActivity('create', $this->getRecord());
}
}
31 changes: 31 additions & 0 deletions app/Filament/Admin/Pages/BaseAdminEditRecord.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?php

namespace App\Filament\Admin\Pages;

use App\Traits\Filament\LogsAdminActivity;
use Filament\Resources\Pages\EditRecord;

abstract class BaseAdminEditRecord extends EditRecord
{
use LogsAdminActivity;

/** @var array<string, mixed> */
protected array $attributesBeforeSave = [];

protected function beforeSave(): void
{
$this->attributesBeforeSave = $this->getRecord()->getAttributes();
}

protected function afterSave(): void
{
// getChanges() is cast-aware, so a no-op save produces nothing here.
$changes = static::buildDiff($this->attributesBeforeSave, $this->getRecord()->getChanges());

if ($changes === []) {
return;
}

static::logAdminActivity('update', $this->getRecord(), ['changes' => $changes]);
}
}
4 changes: 2 additions & 2 deletions app/Filament/Admin/Resources/Eggs/Pages/CreateEgg.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use App\Enums\EditorLanguages;
use App\Enums\TablerIcon;
use App\Filament\Admin\Pages\BaseAdminCreateRecord;
use App\Filament\Admin\Resources\Eggs\EggResource;
use App\Filament\Components\Forms\Fields\CopyFrom;
use App\Filament\Components\Forms\Fields\MonacoEditor;
Expand All @@ -22,7 +23,6 @@
use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Toggle;
use Filament\Resources\Pages\CreateRecord;
use Filament\Schemas\Components\Fieldset;
use Filament\Schemas\Components\Tabs;
use Filament\Schemas\Components\Tabs\Tab;
Expand All @@ -33,7 +33,7 @@
use Illuminate\Support\Str;
use Illuminate\Validation\Rules\Unique;

class CreateEgg extends CreateRecord
class CreateEgg extends BaseAdminCreateRecord
{
use CanCustomizeHeaderActions;
use CanCustomizeHeaderWidgets;
Expand Down
8 changes: 4 additions & 4 deletions app/Filament/Admin/Resources/Eggs/Pages/EditEgg.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,22 @@
namespace App\Filament\Admin\Resources\Eggs\Pages;

use App\Enums\TablerIcon;
use App\Filament\Admin\Pages\BaseAdminEditRecord;
use App\Filament\Admin\Resources\Eggs\EggResource;
use App\Filament\Components\Actions\ExportEggAction;
use App\Filament\Components\Actions\ImportEggAction;
use App\Filament\Components\Actions\LoggedDeleteAction;
use App\Models\Egg;
use App\Traits\Filament\CanCustomizeHeaderActions;
use App\Traits\Filament\CanCustomizeHeaderWidgets;
use App\Traits\Filament\CanCustomizeTabs;
use Filament\Actions\Action;
use Filament\Actions\ActionGroup;
use Filament\Actions\DeleteAction;
use Filament\Resources\Pages\EditRecord;
use Filament\Schemas\Components\Tabs;
use Filament\Schemas\Components\Tabs\Tab;
use Filament\Schemas\Schema;

class EditEgg extends EditRecord
class EditEgg extends BaseAdminEditRecord
{
use CanCustomizeHeaderActions;
use CanCustomizeHeaderWidgets;
Expand Down Expand Up @@ -47,7 +47,7 @@ protected function getDefaultTabs(): array
protected function getDefaultHeaderActions(): array
{
return [
DeleteAction::make()
LoggedDeleteAction::make()
->disabled(fn (Egg $egg): bool => $egg->servers()->count() > 0)
->tooltip(fn (Egg $egg): string => $egg->servers()->count() <= 0 ? trans('filament-actions::delete.single.label') : trans('admin/egg.in_use')),
ExportEggAction::make(),
Expand Down
4 changes: 2 additions & 2 deletions app/Filament/Admin/Resources/Mounts/Pages/CreateMount.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,16 @@
namespace App\Filament\Admin\Resources\Mounts\Pages;

use App\Enums\TablerIcon;
use App\Filament\Admin\Pages\BaseAdminCreateRecord;
use App\Filament\Admin\Resources\Mounts\MountResource;
use App\Traits\Filament\CanCustomizeHeaderActions;
use App\Traits\Filament\CanCustomizeHeaderWidgets;
use Filament\Actions\Action;
use Filament\Actions\ActionGroup;
use Filament\Resources\Pages\CreateRecord;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Str;

class CreateMount extends CreateRecord
class CreateMount extends BaseAdminCreateRecord
{
use CanCustomizeHeaderActions;
use CanCustomizeHeaderWidgets;
Expand Down
8 changes: 4 additions & 4 deletions app/Filament/Admin/Resources/Mounts/Pages/EditMount.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@
namespace App\Filament\Admin\Resources\Mounts\Pages;

use App\Enums\TablerIcon;
use App\Filament\Admin\Pages\BaseAdminEditRecord;
use App\Filament\Admin\Resources\Mounts\MountResource;
use App\Filament\Components\Actions\LoggedDeleteAction;
use App\Traits\Filament\CanCustomizeHeaderActions;
use App\Traits\Filament\CanCustomizeHeaderWidgets;
use Filament\Actions\Action;
use Filament\Actions\ActionGroup;
use Filament\Actions\DeleteAction;
use Filament\Resources\Pages\EditRecord;

class EditMount extends EditRecord
class EditMount extends BaseAdminEditRecord
{
use CanCustomizeHeaderActions;
use CanCustomizeHeaderWidgets;
Expand All @@ -22,7 +22,7 @@ class EditMount extends EditRecord
protected function getDefaultHeaderActions(): array
{
return [
DeleteAction::make(),
LoggedDeleteAction::make(),
Action::make('save')
->hiddenLabel()
->action('save')
Expand Down
4 changes: 2 additions & 2 deletions app/Filament/Admin/Resources/Nodes/Pages/CreateNode.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace App\Filament\Admin\Resources\Nodes\Pages;

use App\Enums\TablerIcon;
use App\Filament\Admin\Pages\BaseAdminCreateRecord;
use App\Filament\Admin\Resources\Nodes\NodeResource;
use App\Models\Node;
use App\Traits\Filament\CanCustomizeHeaderActions;
Expand All @@ -13,7 +14,6 @@
use Filament\Forms\Components\TagsInput;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\ToggleButtons;
use Filament\Resources\Pages\CreateRecord;
use Filament\Schemas\Components\Grid;
use Filament\Schemas\Components\Utilities\Get;
use Filament\Schemas\Components\Utilities\Set;
Expand All @@ -24,7 +24,7 @@
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\HtmlString;

class CreateNode extends CreateRecord
class CreateNode extends BaseAdminCreateRecord
{
use CanCustomizeHeaderActions;
use CanCustomizeHeaderWidgets;
Expand Down
10 changes: 6 additions & 4 deletions app/Filament/Admin/Resources/Nodes/Pages/EditNode.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,23 @@
namespace App\Filament\Admin\Resources\Nodes\Pages;

use App\Enums\TablerIcon;
use App\Filament\Admin\Pages\BaseAdminEditRecord;
use App\Filament\Admin\Resources\Nodes\NodeResource;
use App\Filament\Components\Actions\LoggedDeleteAction;
use App\Models\Node;
use App\Repositories\Daemon\DaemonSystemRepository;
use App\Traits\Filament\CanCustomizeHeaderActions;
use App\Traits\Filament\CanCustomizeHeaderWidgets;
use App\Traits\Filament\CanCustomizeTabs;
use Filament\Actions\Action;
use Filament\Actions\DeleteAction;
use Filament\Notifications\Notification;
use Filament\Resources\Pages\EditRecord;
use Filament\Schemas\Components\Actions;
use Filament\Schemas\Components\Tabs;
use Filament\Schemas\Components\Tabs\Tab;
use Filament\Schemas\Schema;
use Illuminate\Http\Client\ConnectionException;

class EditNode extends EditRecord
class EditNode extends BaseAdminEditRecord
{
use CanCustomizeHeaderActions;
use CanCustomizeHeaderWidgets;
Expand Down Expand Up @@ -82,7 +82,7 @@ protected function getFormActions(): array
protected function getDefaultHeaderActions(): array
{
return [
DeleteAction::make()
LoggedDeleteAction::make()
->disabled(fn (Node $node) => $node->servers()->count() > 0)
->tooltip(fn (Node $node) => $node->servers()->count() > 0 ? trans('admin/node.node_has_servers') : trans('filament-actions::delete.single.label')),
Action::make('save')
Expand All @@ -105,6 +105,8 @@ protected function mutateFormDataBeforeSave(array $data): array

protected function afterSave(): void
{
parent::afterSave();

$this->fillForm();

/** @var Node $node */
Expand Down
4 changes: 2 additions & 2 deletions app/Filament/Admin/Resources/Servers/Pages/CreateServer.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace App\Filament\Admin\Resources\Servers\Pages;

use App\Enums\TablerIcon;
use App\Filament\Admin\Pages\BaseAdminCreateRecord;
use App\Filament\Admin\Resources\Servers\ServerResource;
use App\Filament\Components\Forms\Fields\StartupVariable;
use App\Models\Allocation;
Expand All @@ -28,7 +29,6 @@
use Filament\Forms\Components\ToggleButtons;
use Filament\Infolists\Components\TextEntry;
use Filament\Notifications\Notification;
use Filament\Resources\Pages\CreateRecord;
use Filament\Schemas\Components\Fieldset;
use Filament\Schemas\Components\Grid;
use Filament\Schemas\Components\Section;
Expand All @@ -46,7 +46,7 @@
use LogicException;
use Random\RandomException;

class CreateServer extends CreateRecord
class CreateServer extends BaseAdminCreateRecord
{
use CanCustomizeHeaderActions;
use CanCustomizeHeaderWidgets;
Expand Down
10 changes: 8 additions & 2 deletions app/Filament/Admin/Resources/Servers/Pages/EditServer.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace App\Filament\Admin\Resources\Servers\Pages;

use App\Enums\TablerIcon;
use App\Filament\Admin\Pages\BaseAdminEditRecord;
use App\Filament\Admin\Resources\Servers\ServerResource;
use App\Filament\Server\Pages\Console;
use App\Models\Server;
Expand All @@ -14,14 +15,13 @@
use Filament\Actions\Action;
use Filament\Actions\ActionGroup;
use Filament\Notifications\Notification;
use Filament\Resources\Pages\EditRecord;
use Filament\Schemas\Components\Tabs;
use Filament\Schemas\Components\Tabs\Tab;
use Filament\Schemas\Schema;
use Illuminate\Http\Client\ConnectionException;
use Random\RandomException;

class EditServer extends EditRecord
class EditServer extends BaseAdminEditRecord
{
use CanCustomizeHeaderActions;
use CanCustomizeHeaderWidgets;
Expand Down Expand Up @@ -83,6 +83,8 @@ protected function getDefaultHeaderActions(): array
try {
$service->handle($server);

static::logAdminActivity('delete', $server);

return redirect(ListServers::getUrl(panel: 'admin'));
} catch (ConnectionException) {
cache()->put("servers.$server->uuid.canForceDelete", true, now()->addMinutes(5));
Expand All @@ -109,6 +111,8 @@ protected function getDefaultHeaderActions(): array
try {
$service->withForce()->handle($server);

static::logAdminActivity('delete', $server);

return redirect(ListServers::getUrl(panel: 'admin'));
} catch (ConnectionException) {
return cache()->forget("servers.$server->uuid.canForceDelete");
Expand Down Expand Up @@ -149,6 +153,8 @@ protected function mutateFormDataBeforeSave(array $data): array

protected function afterSave(): void
{
parent::afterSave();

/** @var Server $server */
$server = $this->record;

Expand Down
4 changes: 2 additions & 2 deletions app/Filament/Admin/Resources/Users/Pages/CreateUser.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,17 @@
namespace App\Filament\Admin\Resources\Users\Pages;

use App\Enums\TablerIcon;
use App\Filament\Admin\Pages\BaseAdminCreateRecord;
use App\Filament\Admin\Resources\Users\UserResource;
use App\Models\Role;
use App\Services\Users\UserCreationService;
use App\Traits\Filament\CanCustomizeHeaderActions;
use App\Traits\Filament\CanCustomizeHeaderWidgets;
use Filament\Actions\Action;
use Filament\Actions\ActionGroup;
use Filament\Resources\Pages\CreateRecord;
use Illuminate\Database\Eloquent\Model;

class CreateUser extends CreateRecord
class CreateUser extends BaseAdminCreateRecord
{
use CanCustomizeHeaderActions;
use CanCustomizeHeaderWidgets;
Expand Down
8 changes: 4 additions & 4 deletions app/Filament/Admin/Resources/Users/Pages/EditUser.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,18 @@
namespace App\Filament\Admin\Resources\Users\Pages;

use App\Enums\TablerIcon;
use App\Filament\Admin\Pages\BaseAdminEditRecord;
use App\Filament\Admin\Resources\Users\UserResource;
use App\Filament\Components\Actions\LoggedDeleteAction;
use App\Models\User;
use App\Services\Users\UserUpdateService;
use App\Traits\Filament\CanCustomizeHeaderActions;
use App\Traits\Filament\CanCustomizeHeaderWidgets;
use Filament\Actions\Action;
use Filament\Actions\ActionGroup;
use Filament\Actions\DeleteAction;
use Filament\Resources\Pages\EditRecord;
use Illuminate\Database\Eloquent\Model;

class EditUser extends EditRecord
class EditUser extends BaseAdminEditRecord
{
use CanCustomizeHeaderActions;
use CanCustomizeHeaderWidgets;
Expand All @@ -32,7 +32,7 @@ public function boot(UserUpdateService $service): void
protected function getDefaultHeaderActions(): array
{
return [
DeleteAction::make()
LoggedDeleteAction::make()
->tooltip(fn (User $user) => user()?->id === $user->id ? trans('admin/user.self_delete') : ($user->servers()->count() > 0 ? trans('admin/user.has_servers') : trans('filament-actions::delete.single.modal.actions.delete.label')))
->disabled(fn (User $user) => user()?->id === $user->id || $user->servers()->count() > 0),
Action::make('save')
Expand Down
20 changes: 20 additions & 0 deletions app/Filament/Components/Actions/LoggedDeleteAction.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php

namespace App\Filament\Components\Actions;

use App\Traits\Filament\LogsAdminActivity;
use Filament\Actions\DeleteAction;
use Illuminate\Database\Eloquent\Model;

class LoggedDeleteAction extends DeleteAction
{
use LogsAdminActivity;

protected function setUp(): void
{
parent::setUp();

// The record is deleted but still in memory here.
$this->after(fn (Model $record) => static::logAdminActivity('delete', $record));
}
}
2 changes: 2 additions & 0 deletions app/Providers/AppServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
use App\Models\Database;
use App\Models\Egg;
use App\Models\EggVariable;
use App\Models\Mount;
use App\Models\Node;
use App\Models\Schedule;
use App\Models\Server;
Expand Down Expand Up @@ -77,6 +78,7 @@ public function boot(
'ssh_key' => UserSSHKey::class,
'task' => Task::class,
'user' => User::class,
'mount' => Mount::class,
'node' => Node::class,
]);

Expand Down
Loading
Loading