diff --git a/app/Web/Pages/Servers/Sites/Page.php b/app/Web/Pages/Servers/Sites/Page.php index c153389..4f458c3 100644 --- a/app/Web/Pages/Servers/Sites/Page.php +++ b/app/Web/Pages/Servers/Sites/Page.php @@ -3,6 +3,7 @@ namespace App\Web\Pages\Servers\Sites; use App\Models\Queue; +use App\Models\ServerLog; use App\Models\Site; use App\Models\Ssl; use App\Web\Contracts\HasSecondSubNav; @@ -52,6 +53,16 @@ public function getSecondSubNavigation(): array ])); } + if ($user->can('viewAny', [ServerLog::class, $this->server])) { + $items[] = NavigationItem::make(Pages\Logs\Index::getNavigationLabel()) + ->icon('heroicon-o-square-3-stack-3d') + ->isActiveWhen(fn () => request()->routeIs(Pages\Logs\Index::getRouteName())) + ->url(Pages\Logs\Index::getUrl(parameters: [ + 'server' => $this->server, + 'site' => $this->site, + ])); + } + if ($user->can('update', [$this->site, $this->server])) { $items[] = NavigationItem::make(Settings::getNavigationLabel()) ->icon('heroicon-o-wrench-screwdriver') diff --git a/app/Web/Pages/Servers/Sites/Pages/Logs/Index.php b/app/Web/Pages/Servers/Sites/Pages/Logs/Index.php new file mode 100644 index 0000000..93d4c2c --- /dev/null +++ b/app/Web/Pages/Servers/Sites/Pages/Logs/Index.php @@ -0,0 +1,37 @@ +authorize('viewAny', [ServerLog::class, $this->server]); + } + + public function getWidgets(): array + { + return [ + [ + LogsList::class, [ + 'server' => $this->server, + 'site' => $this->site, + 'label' => 'Logs', + ], + ], + ]; + } + + protected function getHeaderActions(): array + { + return []; + } +} diff --git a/app/Web/Pages/Servers/Sites/View.php b/app/Web/Pages/Servers/Sites/View.php index fb0f5ed..b1c462f 100644 --- a/app/Web/Pages/Servers/Sites/View.php +++ b/app/Web/Pages/Servers/Sites/View.php @@ -7,9 +7,7 @@ use App\Actions\Site\UpdateDeploymentScript; use App\Actions\Site\UpdateEnv; use App\Enums\SiteFeature; -use App\Models\ServerLog; use App\Web\Fields\CodeEditorField; -use App\Web\Pages\Servers\Logs\Widgets\LogsList; use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Forms\Components\TextInput; @@ -62,16 +60,6 @@ public function getWidgets(): array } } - if (auth()->user()->can('viewAny', [ServerLog::class, $this->server])) { - $widgets[] = [ - LogsList::class, [ - 'server' => $this->server, - 'site' => $this->site, - 'label' => 'Logs', - ], - ]; - } - return $widgets; } diff --git a/tests/Feature/SiteLogsTest.php b/tests/Feature/SiteLogsTest.php new file mode 100644 index 0000000..59ff645 --- /dev/null +++ b/tests/Feature/SiteLogsTest.php @@ -0,0 +1,37 @@ +actingAs($this->user); + + /** @var ServerLog $lastLog */ + $lastLog = ServerLog::factory()->create([ + 'server_id' => $this->server->id, + 'site_id' => $this->site->id, + ]); + + $this->get( + Index::getUrl([ + 'server' => $this->server, + 'site' => $this->site, + ]) + ) + ->assertSuccessful() + ->assertSee($lastLog->name); + } +}