From a9e4495c915133aa705f56994523a13a3a314ab6 Mon Sep 17 00:00:00 2001 From: Charles Date: Thu, 6 Mar 2025 09:28:45 -0500 Subject: [PATCH] Add missing activity loggers on client area (#1060) * Update Subuser Adds user deleted notification, Adds logger for creating subusers. * Update Tasks * ... * Update Schedule * Update Files * Update Database * Move `reinstall` to proper array * Add `:action` to deleted task log * Updates * Fix CreateSchedule * Fix Editing/Saving --------- Co-authored-by: RMartinOscar <40749467+RMartinOscar@users.noreply.github.com> --- .../Actions/RotateDatabasePasswordAction.php | 6 +++++ .../DatabaseResource/Pages/ListDatabases.php | 9 +++++++- .../FileResource/Pages/EditFiles.php | 4 ++++ .../FileResource/Pages/ListFiles.php | 4 ++-- .../ScheduleResource/Pages/CreateSchedule.php | 12 ++++++++++ .../ScheduleResource/Pages/EditSchedule.php | 19 +++++++++++++++- .../ScheduleResource/Pages/ListSchedules.php | 11 ++++++++-- .../RelationManagers/TasksRelationManager.php | 22 ++++++++++++++++++- .../Server/Resources/UserResource.php | 4 ++++ .../UserResource/Pages/ListUsers.php | 7 ++++++ .../Databases/DatabaseManagementService.php | 6 +++++ lang/en/activity.php | 4 ++-- 12 files changed, 99 insertions(+), 9 deletions(-) diff --git a/app/Filament/Components/Forms/Actions/RotateDatabasePasswordAction.php b/app/Filament/Components/Forms/Actions/RotateDatabasePasswordAction.php index 4992a6b64..5bcab7469 100644 --- a/app/Filament/Components/Forms/Actions/RotateDatabasePasswordAction.php +++ b/app/Filament/Components/Forms/Actions/RotateDatabasePasswordAction.php @@ -2,6 +2,7 @@ namespace App\Filament\Components\Forms\Actions; +use App\Facades\Activity; use App\Models\Database; use App\Services\Databases\DatabasePasswordService; use Exception; @@ -44,6 +45,11 @@ class RotateDatabasePasswordAction extends Action $set('password', $database->password); $set('jdbc', $database->jdbc); + Activity::event('server:database.rotate-password') + ->subject($database) + ->property('name', $database->database) + ->log(); + Notification::make() ->title(trans('admin/databasehost.rotated')) ->success() diff --git a/app/Filament/Server/Resources/DatabaseResource/Pages/ListDatabases.php b/app/Filament/Server/Resources/DatabaseResource/Pages/ListDatabases.php index 10e52596c..f2c3a7004 100644 --- a/app/Filament/Server/Resources/DatabaseResource/Pages/ListDatabases.php +++ b/app/Filament/Server/Resources/DatabaseResource/Pages/ListDatabases.php @@ -2,6 +2,7 @@ namespace App\Filament\Server\Resources\DatabaseResource\Pages; +use App\Facades\Activity; use App\Filament\Components\Forms\Actions\RotateDatabasePasswordAction; use App\Filament\Components\Tables\Columns\DateTimeColumn; use App\Filament\Server\Resources\DatabaseResource; @@ -75,7 +76,13 @@ class ListDatabases extends ListRecords ->actions([ ViewAction::make() ->modalHeading(fn (Database $database) => 'Viewing ' . $database->database), - DeleteAction::make(), + DeleteAction::make() + ->after(function (Database $database) { + Activity::event('server:database.delete') + ->subject($database) + ->property('name', $database->database) + ->log(); + }), ]); } diff --git a/app/Filament/Server/Resources/FileResource/Pages/EditFiles.php b/app/Filament/Server/Resources/FileResource/Pages/EditFiles.php index 662fa0b0e..21821f9f3 100644 --- a/app/Filament/Server/Resources/FileResource/Pages/EditFiles.php +++ b/app/Filament/Server/Resources/FileResource/Pages/EditFiles.php @@ -53,6 +53,10 @@ class EditFiles extends Page /** @var Server $server */ $server = Filament::getTenant(); + Activity::event('server:file.read') + ->property('file', $this->path) + ->log(); + return $form ->schema([ Section::make('Editing: ' . $this->path) diff --git a/app/Filament/Server/Resources/FileResource/Pages/ListFiles.php b/app/Filament/Server/Resources/FileResource/Pages/ListFiles.php index 3de864cc7..82f3cef8f 100644 --- a/app/Filament/Server/Resources/FileResource/Pages/ListFiles.php +++ b/app/Filament/Server/Resources/FileResource/Pages/ListFiles.php @@ -452,8 +452,8 @@ class ListFiles extends ListRecords ->setServer($server) ->createDirectory($data['name'], $this->path); - Activity::event('server:file.write') - ->property('file', join_paths($this->path, $data['name'])) + Activity::event('server:file.create-directory') + ->property(['directory' => $this->path, 'name' => $data['name']]) ->log(); }) ->form([ diff --git a/app/Filament/Server/Resources/ScheduleResource/Pages/CreateSchedule.php b/app/Filament/Server/Resources/ScheduleResource/Pages/CreateSchedule.php index 89f62a742..3594bb3c4 100644 --- a/app/Filament/Server/Resources/ScheduleResource/Pages/CreateSchedule.php +++ b/app/Filament/Server/Resources/ScheduleResource/Pages/CreateSchedule.php @@ -3,8 +3,10 @@ namespace App\Filament\Server\Resources\ScheduleResource\Pages; use App\Exceptions\DisplayException; +use App\Facades\Activity; use App\Filament\Server\Resources\ScheduleResource; use App\Helpers\Utilities; +use App\Models\Schedule; use App\Models\Server; use Carbon\Carbon; use Exception; @@ -17,6 +19,16 @@ class CreateSchedule extends CreateRecord protected static bool $canCreateAnother = false; + protected function afterCreate(): void + { + /** @var Schedule $schedule */ + $schedule = $this->record; + + Activity::event('server:schedule.create') + ->property('name', $schedule->name) + ->log(); + } + protected function mutateFormDataBeforeCreate(array $data): array { if (!isset($data['server_id'])) { diff --git a/app/Filament/Server/Resources/ScheduleResource/Pages/EditSchedule.php b/app/Filament/Server/Resources/ScheduleResource/Pages/EditSchedule.php index 2742dfc98..3014d0c20 100644 --- a/app/Filament/Server/Resources/ScheduleResource/Pages/EditSchedule.php +++ b/app/Filament/Server/Resources/ScheduleResource/Pages/EditSchedule.php @@ -2,7 +2,9 @@ namespace App\Filament\Server\Resources\ScheduleResource\Pages; +use App\Facades\Activity; use App\Filament\Server\Resources\ScheduleResource; +use App\Models\Schedule; use Filament\Actions; use Filament\Resources\Pages\EditRecord; @@ -10,10 +12,25 @@ class EditSchedule extends EditRecord { protected static string $resource = ScheduleResource::class; + protected function afterSave(): void + { + /** @var Schedule $schedule */ + $schedule = $this->record; + + Activity::event('server:schedule.update') + ->property('name', $schedule->name) + ->log(); + } + protected function getHeaderActions(): array { return [ - Actions\DeleteAction::make(), + Actions\DeleteAction::make() + ->after(function ($record) { + Activity::event('server:schedule.delete') + ->property('name', $record->name) + ->log(); + }), $this->getSaveFormAction()->formId('form')->label('Save'), $this->getCancelFormAction()->formId('form'), ]; diff --git a/app/Filament/Server/Resources/ScheduleResource/Pages/ListSchedules.php b/app/Filament/Server/Resources/ScheduleResource/Pages/ListSchedules.php index 73f6d48e0..5aca82b53 100644 --- a/app/Filament/Server/Resources/ScheduleResource/Pages/ListSchedules.php +++ b/app/Filament/Server/Resources/ScheduleResource/Pages/ListSchedules.php @@ -2,6 +2,7 @@ namespace App\Filament\Server\Resources\ScheduleResource\Pages; +use App\Facades\Activity; use App\Filament\Server\Resources\ScheduleResource; use App\Models\Schedule; use App\Filament\Components\Tables\Columns\DateTimeColumn; @@ -44,14 +45,20 @@ class ListSchedules extends ListRecords ->actions([ ViewAction::make(), EditAction::make(), - DeleteAction::make(), + DeleteAction::make() + ->after(function (Schedule $schedule) { + Activity::event('server:schedule.delete') + ->subject($schedule) + ->property('name', $schedule->name) + ->log(); + }), ]); } protected function getHeaderActions(): array { return [ - Actions\CreateAction::make(), + Actions\CreateAction::make()->label('New Schedule'), ]; } diff --git a/app/Filament/Server/Resources/ScheduleResource/RelationManagers/TasksRelationManager.php b/app/Filament/Server/Resources/ScheduleResource/RelationManagers/TasksRelationManager.php index a99888b75..5b7b2ffe4 100644 --- a/app/Filament/Server/Resources/ScheduleResource/RelationManagers/TasksRelationManager.php +++ b/app/Filament/Server/Resources/ScheduleResource/RelationManagers/TasksRelationManager.php @@ -104,8 +104,28 @@ class TasksRelationManager extends RelationManager $data['payload'] ??= ''; return $data; + }) + ->after(function ($data) { + /** @var Schedule $schedule */ + $schedule = $this->getOwnerRecord(); + + Activity::event('server:task.update') + ->subject($schedule) + ->property(['name' => $schedule->name, 'action' => $data['action'], 'payload' => $data['payload']]) + ->log(); + + }), + DeleteAction::make() + ->action(function (Task $task) { + /** @var Schedule $schedule */ + $schedule = $this->getOwnerRecord(); + $task->delete(); + + Activity::event('server:task.delete') + ->subject($schedule) + ->property(['name' => $schedule->name, 'action' => $task->action, 'payload' => $task->payload]) + ->log(); }), - DeleteAction::make(), ]) ->headerActions([ CreateAction::make() diff --git a/app/Filament/Server/Resources/UserResource.php b/app/Filament/Server/Resources/UserResource.php index 345a6a433..8d810d88e 100644 --- a/app/Filament/Server/Resources/UserResource.php +++ b/app/Filament/Server/Resources/UserResource.php @@ -108,6 +108,10 @@ class UserResource extends Resource $subuser = Subuser::query()->where('user_id', $user->id)->where('server_id', $server->id)->first(); $subuserDeletionService->handle($subuser, $server); + Notification::make() + ->title('User Deleted!') + ->success() + ->send(); }), EditAction::make() ->label('Edit User') diff --git a/app/Filament/Server/Resources/UserResource/Pages/ListUsers.php b/app/Filament/Server/Resources/UserResource/Pages/ListUsers.php index c7812f256..b062e6d2c 100644 --- a/app/Filament/Server/Resources/UserResource/Pages/ListUsers.php +++ b/app/Filament/Server/Resources/UserResource/Pages/ListUsers.php @@ -2,6 +2,7 @@ namespace App\Filament\Server\Resources\UserResource\Pages; +use App\Facades\Activity; use App\Filament\Server\Resources\UserResource; use App\Models\Permission; use App\Models\Server; @@ -395,6 +396,12 @@ class ListUsers extends ListRecords try { $service->handle($server, $email, $permissions); + Activity::event('server:subuser.create') + ->subject($data['email']) + ->property([ + 'email' => $data['email'], + ]); + Notification::make() ->title('User Invited!') ->success() diff --git a/app/Services/Databases/DatabaseManagementService.php b/app/Services/Databases/DatabaseManagementService.php index feef10817..88146f709 100644 --- a/app/Services/Databases/DatabaseManagementService.php +++ b/app/Services/Databases/DatabaseManagementService.php @@ -2,6 +2,7 @@ namespace App\Services\Databases; +use App\Facades\Activity; use App\Models\Server; use App\Models\Database; use App\Helpers\Utilities; @@ -105,6 +106,11 @@ class DatabaseManagementService $database->assignUserToDatabase($database->database, $database->username, $database->remote); $database->flush(); + Activity::event('server:database.create') + ->subject($database) + ->property('name', $database->database) + ->log(); + return $database; }); } diff --git a/lang/en/activity.php b/lang/en/activity.php index 0d921c8a3..d34bdcefe 100644 --- a/lang/en/activity.php +++ b/lang/en/activity.php @@ -39,7 +39,6 @@ return [ ], ], 'server' => [ - 'reinstall' => 'Reinstalled server', 'console' => [ 'command' => 'Executed ":command" on the server', ], @@ -103,11 +102,12 @@ return [ 'task' => [ 'create' => 'Created a new ":action" task for the :name schedule', 'update' => 'Updated the ":action" task for the :name schedule', - 'delete' => 'Deleted a task for the :name schedule', + 'delete' => 'Deleted the ":action" task for the :name schedule', ], 'settings' => [ 'rename' => 'Renamed the server from ":old" to ":new"', 'description' => 'Changed the server description from ":old" to ":new"', + 'reinstall' => 'Reinstalled server', ], 'startup' => [ 'edit' => 'Changed the :variable variable from ":old" to ":new"',