From bb02ec4c6c9b67787a13a8f6b450cfd74cb164cc Mon Sep 17 00:00:00 2001 From: MartinOscar <40749467+rmartinoscar@users.noreply.github.com> Date: Tue, 7 Oct 2025 23:12:31 +0200 Subject: [PATCH] Add `user()` helper (#1768) --- .../Features/Schemas/GSLTokenSchema.php | 2 +- .../Features/Schemas/JavaVersionSchema.php | 2 +- .../Features/Schemas/PIDLimitSchema.php | 4 +-- .../Features/Schemas/SteamDiskSpaceSchema.php | 2 +- app/Filament/Admin/Pages/Health.php | 2 +- app/Filament/Admin/Pages/Settings.php | 16 ++++----- .../Resources/ApiKeys/ApiKeyResource.php | 2 +- .../Resources/ApiKeys/Pages/CreateApiKey.php | 2 +- .../DatabaseHosts/DatabaseHostResource.php | 4 +-- .../Pages/CreateDatabaseHost.php | 2 +- .../Admin/Resources/Eggs/EggResource.php | 2 +- .../Admin/Resources/Eggs/Pages/ListEggs.php | 2 +- .../Admin/Resources/Mounts/MountResource.php | 4 +-- .../Admin/Resources/Nodes/NodeResource.php | 4 +-- .../AllocationsRelationManager.php | 2 +- .../Resources/Nodes/Widgets/NodeCpuChart.php | 4 +-- .../Nodes/Widgets/NodeMemoryChart.php | 4 +-- .../Nodes/Widgets/NodeStorageChart.php | 2 +- .../Admin/Resources/Roles/RoleResource.php | 2 +- .../Resources/Servers/Pages/CreateServer.php | 10 +++--- .../Resources/Servers/Pages/EditServer.php | 6 ++-- .../Resources/Servers/Pages/ListServers.php | 6 ++-- .../Resources/Servers/ServerResource.php | 4 +-- .../Admin/Resources/Users/Pages/EditUser.php | 4 +-- .../ServersRelationManager.php | 4 +-- .../Admin/Resources/Users/UserResource.php | 4 +-- .../Resources/Servers/Pages/ListServers.php | 18 +++++----- .../Components/Actions/ExportEggAction.php | 2 +- .../Actions/ExportScheduleAction.php | 2 +- .../Components/Actions/ImportEggAction.php | 2 +- .../Actions/ImportScheduleAction.php | 2 +- .../Actions/RotateDatabasePasswordAction.php | 4 +-- .../Components/Actions/UpdateEggAction.php | 2 +- .../Actions/UpdateEggBulkAction.php | 2 +- .../Tables/Columns/DateTimeColumn.php | 2 +- app/Filament/Pages/Auth/EditProfile.php | 4 +-- app/Filament/Server/Pages/Console.php | 10 +++--- app/Filament/Server/Pages/Settings.php | 22 ++++++------ app/Filament/Server/Pages/Startup.php | 8 ++--- .../Resources/Activities/ActivityResource.php | 14 ++++---- .../Allocations/AllocationResource.php | 16 ++++----- .../Resources/Backups/BackupResource.php | 20 +++++------ .../Resources/Databases/DatabaseResource.php | 16 ++++----- .../Server/Resources/Files/FileResource.php | 8 ++--- .../Resources/Files/Pages/DownloadFiles.php | 6 ++-- .../Resources/Files/Pages/EditFiles.php | 6 ++-- .../Resources/Files/Pages/ListFiles.php | 36 +++++++++---------- .../Schedules/Pages/ViewSchedule.php | 2 +- .../Resources/Schedules/ScheduleResource.php | 12 +++---- .../Server/Resources/Users/UserResource.php | 16 ++++----- .../Server/Widgets/ServerCpuChart.php | 6 ++-- .../Server/Widgets/ServerMemoryChart.php | 6 ++-- .../Server/Widgets/ServerNetworkChart.php | 4 +-- app/Providers/Filament/AppPanelProvider.php | 2 +- app/Providers/Filament/PanelProvider.php | 5 ++- .../Filament/ServerPanelProvider.php | 4 +-- .../Subusers/SubuserCreationService.php | 2 +- .../Subusers/SubuserUpdateService.php | 2 +- app/helpers.php | 9 ++++- resources/views/errors/500.blade.php | 2 +- .../components/server-console.blade.php | 6 ++-- 61 files changed, 194 insertions(+), 188 deletions(-) diff --git a/app/Extensions/Features/Schemas/GSLTokenSchema.php b/app/Extensions/Features/Schemas/GSLTokenSchema.php index 23aa0fcfd..f9b0f3a54 100644 --- a/app/Extensions/Features/Schemas/GSLTokenSchema.php +++ b/app/Extensions/Features/Schemas/GSLTokenSchema.php @@ -54,7 +54,7 @@ class GSLTokenSchema implements FeatureSchemaInterface ->modalHeading('Invalid GSL token') ->modalDescription('It seems like your Gameserver Login Token (GSL token) is invalid or has expired.') ->modalSubmitActionLabel('Update GSL Token') - ->disabledSchema(fn () => !auth()->user()->can(Permission::ACTION_STARTUP_UPDATE, $server)) + ->disabledSchema(fn () => !user()?->can(Permission::ACTION_STARTUP_UPDATE, $server)) ->schema([ TextEntry::make('info') ->label(new HtmlString(Blade::render('You can either generate a new one and enter it below or leave the field blank to remove it completely.'))), diff --git a/app/Extensions/Features/Schemas/JavaVersionSchema.php b/app/Extensions/Features/Schemas/JavaVersionSchema.php index 2fdb7f6e8..fc18a4fd9 100644 --- a/app/Extensions/Features/Schemas/JavaVersionSchema.php +++ b/app/Extensions/Features/Schemas/JavaVersionSchema.php @@ -44,7 +44,7 @@ class JavaVersionSchema implements FeatureSchemaInterface ->modalHeading('Unsupported Java Version') ->modalDescription('This server is currently running an unsupported version of Java and cannot be started.') ->modalSubmitActionLabel('Update Docker Image') - ->disabledSchema(fn () => !auth()->user()->can(Permission::ACTION_STARTUP_DOCKER_IMAGE, $server)) + ->disabledSchema(fn () => !user()?->can(Permission::ACTION_STARTUP_DOCKER_IMAGE, $server)) ->schema([ TextEntry::make('java') ->label('Please select a supported version from the list below to continue starting the server.'), diff --git a/app/Extensions/Features/Schemas/PIDLimitSchema.php b/app/Extensions/Features/Schemas/PIDLimitSchema.php index 29b4abb6f..63581ae08 100644 --- a/app/Extensions/Features/Schemas/PIDLimitSchema.php +++ b/app/Extensions/Features/Schemas/PIDLimitSchema.php @@ -32,9 +32,9 @@ class PIDLimitSchema implements FeatureSchemaInterface return Action::make($this->getId()) ->requiresConfirmation() ->icon('tabler-alert-triangle') - ->modalHeading(fn () => auth()->user()->isAdmin() ? 'Memory or process limit reached...' : 'Possible resource limit reached...') + ->modalHeading(fn () => user()?->isAdmin() ? 'Memory or process limit reached...' : 'Possible resource limit reached...') ->modalDescription(new HtmlString(Blade::render( - auth()->user()->isAdmin() ? <<<'HTML' + user()?->isAdmin() ? <<<'HTML'

This server has reached the maximum process or memory limit.

diff --git a/app/Extensions/Features/Schemas/SteamDiskSpaceSchema.php b/app/Extensions/Features/Schemas/SteamDiskSpaceSchema.php index b6ad64a12..3862310b8 100644 --- a/app/Extensions/Features/Schemas/SteamDiskSpaceSchema.php +++ b/app/Extensions/Features/Schemas/SteamDiskSpaceSchema.php @@ -29,7 +29,7 @@ class SteamDiskSpaceSchema implements FeatureSchemaInterface ->requiresConfirmation() ->modalHeading('Out of available disk space...') ->modalDescription(new HtmlString(Blade::render( - auth()->user()->isAdmin() ? <<<'HTML' + user()?->isAdmin() ? <<<'HTML'

This server has run out of available disk space and cannot complete the install or update process. diff --git a/app/Filament/Admin/Pages/Health.php b/app/Filament/Admin/Pages/Health.php index 7a08cec49..81d1b69bc 100644 --- a/app/Filament/Admin/Pages/Health.php +++ b/app/Filament/Admin/Pages/Health.php @@ -39,7 +39,7 @@ class Health extends Page public static function canAccess(): bool { - return auth()->user()->can('view health'); + return user()?->can('view health'); } protected function getActions(): array diff --git a/app/Filament/Admin/Pages/Settings.php b/app/Filament/Admin/Pages/Settings.php index 414e65d42..b894fafb4 100644 --- a/app/Filament/Admin/Pages/Settings.php +++ b/app/Filament/Admin/Pages/Settings.php @@ -82,7 +82,7 @@ class Settings extends Page implements HasSchemas public static function canAccess(): bool { - return auth()->user()->can('view settings'); + return user()?->can('view settings'); } public function getTitle(): string @@ -106,7 +106,7 @@ class Settings extends Page implements HasSchemas Tabs::make('Tabs') ->columns() ->persistTabInQueryString() - ->disabled(fn () => !auth()->user()->can('update settings')) + ->disabled(fn () => !user()?->can('update settings')) ->tabs([ Tab::make('general') ->label(trans('admin/setting.navigation.general')) @@ -233,12 +233,12 @@ class Settings extends Page implements HasSchemas ->color('danger') ->icon('tabler-trash') ->requiresConfirmation() - ->authorize(fn () => auth()->user()->can('update settings')) + ->authorize(fn () => user()?->can('update settings')) ->action(fn (Set $set) => $set('TRUSTED_PROXIES', [])), Action::make('cloudflare') ->label(trans('admin/setting.general.set_to_cf')) ->icon('tabler-brand-cloudflare') - ->authorize(fn () => auth()->user()->can('update settings')) + ->authorize(fn () => user()?->can('update settings')) ->action(function (Factory $client, Set $set) { $ips = collect(); @@ -335,7 +335,7 @@ class Settings extends Page implements HasSchemas ->label(trans('admin/setting.mail.test_mail')) ->icon('tabler-send') ->hidden(fn (Get $get) => $get('MAIL_MAILER') === 'log') - ->authorize(fn () => auth()->user()->can('update settings')) + ->authorize(fn () => user()?->can('update settings')) ->action(function (Get $get) { // Store original mail configuration $originalConfig = [ @@ -368,8 +368,8 @@ class Settings extends Page implements HasSchemas 'services.mailgun.endpoint' => $get('MAILGUN_ENDPOINT'), ]); - MailNotification::route('mail', auth()->user()->email) - ->notify(new MailTested(auth()->user())); + MailNotification::route('mail', user()?->email) + ->notify(new MailTested(user())); Notification::make() ->title(trans('admin/setting.mail.test_mail_sent')) @@ -822,7 +822,7 @@ class Settings extends Page implements HasSchemas return [ Action::make('save') ->action('save') - ->authorize(fn () => auth()->user()->can('update settings')) + ->authorize(fn () => user()?->can('update settings')) ->keyBindings(['mod+s']), ]; diff --git a/app/Filament/Admin/Resources/ApiKeys/ApiKeyResource.php b/app/Filament/Admin/Resources/ApiKeys/ApiKeyResource.php index f07e589df..bae621752 100644 --- a/app/Filament/Admin/Resources/ApiKeys/ApiKeyResource.php +++ b/app/Filament/Admin/Resources/ApiKeys/ApiKeyResource.php @@ -93,7 +93,7 @@ class ApiKeyResource extends Resource ->sortable(), TextColumn::make('user.username') ->label(trans('admin/apikey.table.created_by')) - ->url(fn (ApiKey $apiKey) => auth()->user()->can('update', $apiKey->user) ? EditUser::getUrl(['record' => $apiKey->user]) : null), + ->url(fn (ApiKey $apiKey) => user()?->can('update', $apiKey->user) ? EditUser::getUrl(['record' => $apiKey->user]) : null), ]) ->recordActions([ DeleteAction::make(), diff --git a/app/Filament/Admin/Resources/ApiKeys/Pages/CreateApiKey.php b/app/Filament/Admin/Resources/ApiKeys/Pages/CreateApiKey.php index e1f163b6e..2ea20592c 100644 --- a/app/Filament/Admin/Resources/ApiKeys/Pages/CreateApiKey.php +++ b/app/Filament/Admin/Resources/ApiKeys/Pages/CreateApiKey.php @@ -38,7 +38,7 @@ class CreateApiKey extends CreateRecord { $data['identifier'] = ApiKey::generateTokenIdentifier(ApiKey::TYPE_APPLICATION); $data['token'] = Str::random(ApiKey::KEY_LENGTH); - $data['user_id'] = auth()->user()->id; + $data['user_id'] = user()?->id; $data['key_type'] = ApiKey::TYPE_APPLICATION; $permissions = []; diff --git a/app/Filament/Admin/Resources/DatabaseHosts/DatabaseHostResource.php b/app/Filament/Admin/Resources/DatabaseHosts/DatabaseHostResource.php index 430a0df6f..b8d0aaee0 100644 --- a/app/Filament/Admin/Resources/DatabaseHosts/DatabaseHostResource.php +++ b/app/Filament/Admin/Resources/DatabaseHosts/DatabaseHostResource.php @@ -166,7 +166,7 @@ class DatabaseHostResource extends Resource ->preload() ->helperText(trans('admin/databasehost.linked_nodes_help')) ->label(trans('admin/databasehost.linked_nodes')) - ->relationship('nodes', 'name', fn (Builder $query) => $query->whereIn('nodes.id', auth()->user()->accessibleNodes()->pluck('id'))), + ->relationship('nodes', 'name', fn (Builder $query) => $query->whereIn('nodes.id', user()?->accessibleNodes()->pluck('id'))), ]), ]); } @@ -196,7 +196,7 @@ class DatabaseHostResource extends Resource return $query->where(function (Builder $query) { return $query->whereHas('nodes', function (Builder $query) { - $query->whereIn('nodes.id', auth()->user()->accessibleNodes()->pluck('id')); + $query->whereIn('nodes.id', user()?->accessibleNodes()->pluck('id')); })->orDoesntHave('nodes'); }); } diff --git a/app/Filament/Admin/Resources/DatabaseHosts/Pages/CreateDatabaseHost.php b/app/Filament/Admin/Resources/DatabaseHosts/Pages/CreateDatabaseHost.php index f36c30792..67df0e52c 100644 --- a/app/Filament/Admin/Resources/DatabaseHosts/Pages/CreateDatabaseHost.php +++ b/app/Filament/Admin/Resources/DatabaseHosts/Pages/CreateDatabaseHost.php @@ -157,7 +157,7 @@ class CreateDatabaseHost extends CreateRecord ->preload() ->helperText(trans('admin/databasehost.linked_nodes_help')) ->label(trans('admin/databasehost.linked_nodes')) - ->relationship('nodes', 'name', fn (Builder $query) => $query->whereIn('nodes.id', auth()->user()->accessibleNodes()->pluck('id'))), + ->relationship('nodes', 'name', fn (Builder $query) => $query->whereIn('nodes.id', user()?->accessibleNodes()->pluck('id'))), ]), ]; } diff --git a/app/Filament/Admin/Resources/Eggs/EggResource.php b/app/Filament/Admin/Resources/Eggs/EggResource.php index 0b92b67de..861288d32 100644 --- a/app/Filament/Admin/Resources/Eggs/EggResource.php +++ b/app/Filament/Admin/Resources/Eggs/EggResource.php @@ -32,7 +32,7 @@ class EggResource extends Resource public static function getNavigationGroup(): ?string { - return auth()->user()->getCustomization(CustomizationKey::TopNavigation) ? false : trans('admin/dashboard.server'); + return user()?->getCustomization(CustomizationKey::TopNavigation) ? false : trans('admin/dashboard.server'); } public static function getNavigationLabel(): string diff --git a/app/Filament/Admin/Resources/Eggs/Pages/ListEggs.php b/app/Filament/Admin/Resources/Eggs/Pages/ListEggs.php index 9bd430a4b..251fea690 100644 --- a/app/Filament/Admin/Resources/Eggs/Pages/ListEggs.php +++ b/app/Filament/Admin/Resources/Eggs/Pages/ListEggs.php @@ -68,7 +68,7 @@ class ListEggs extends ListRecords ->modal(false) ->excludeAttributes(['author', 'uuid', 'update_url', 'servers_count', 'created_at', 'updated_at']) ->beforeReplicaSaved(function (Egg $replica) { - $replica->author = auth()->user()->email; + $replica->author = user()?->email; $replica->name .= ' Copy'; $replica->uuid = Str::uuid()->toString(); }) diff --git a/app/Filament/Admin/Resources/Mounts/MountResource.php b/app/Filament/Admin/Resources/Mounts/MountResource.php index 211c0ed49..d46a94799 100644 --- a/app/Filament/Admin/Resources/Mounts/MountResource.php +++ b/app/Filament/Admin/Resources/Mounts/MountResource.php @@ -166,7 +166,7 @@ class MountResource extends Resource ->preload(), Select::make('nodes')->multiple() ->label(trans('admin/mount.nodes')) - ->relationship('nodes', 'name', fn (Builder $query) => $query->whereIn('nodes.id', auth()->user()->accessibleNodes()->pluck('id'))) + ->relationship('nodes', 'name', fn (Builder $query) => $query->whereIn('nodes.id', user()?->accessibleNodes()->pluck('id'))) ->searchable(['name', 'fqdn']) ->preload(), ]), @@ -197,7 +197,7 @@ class MountResource extends Resource return $query->where(function (Builder $query) { return $query->whereHas('nodes', function (Builder $query) { - $query->whereIn('nodes.id', auth()->user()->accessibleNodes()->pluck('id')); + $query->whereIn('nodes.id', user()?->accessibleNodes()->pluck('id')); })->orDoesntHave('nodes'); }); } diff --git a/app/Filament/Admin/Resources/Nodes/NodeResource.php b/app/Filament/Admin/Resources/Nodes/NodeResource.php index 3caba9a47..d27295fcd 100644 --- a/app/Filament/Admin/Resources/Nodes/NodeResource.php +++ b/app/Filament/Admin/Resources/Nodes/NodeResource.php @@ -44,7 +44,7 @@ class NodeResource extends Resource public static function getNavigationGroup(): ?string { - return auth()->user()->getCustomization(CustomizationKey::TopNavigation) ? false : trans('admin/dashboard.server'); + return user()?->getCustomization(CustomizationKey::TopNavigation) ? false : trans('admin/dashboard.server'); } public static function getNavigationBadge(): ?string @@ -75,6 +75,6 @@ class NodeResource extends Resource { $query = parent::getEloquentQuery(); - return $query->whereIn('id', auth()->user()->accessibleNodes()->pluck('id')); + return $query->whereIn('id', user()?->accessibleNodes()->pluck('id')); } } diff --git a/app/Filament/Admin/Resources/Nodes/RelationManagers/AllocationsRelationManager.php b/app/Filament/Admin/Resources/Nodes/RelationManagers/AllocationsRelationManager.php index f59733e44..3846c562f 100644 --- a/app/Filament/Admin/Resources/Nodes/RelationManagers/AllocationsRelationManager.php +++ b/app/Filament/Admin/Resources/Nodes/RelationManagers/AllocationsRelationManager.php @@ -121,7 +121,7 @@ class AllocationsRelationManager extends RelationManager ]) ->groupedBulkActions([ DeleteBulkAction::make() - ->authorize(fn () => auth()->user()->can('update', $this->getOwnerRecord())), + ->authorize(fn () => user()?->can('update', $this->getOwnerRecord())), ]); } } diff --git a/app/Filament/Admin/Resources/Nodes/Widgets/NodeCpuChart.php b/app/Filament/Admin/Resources/Nodes/Widgets/NodeCpuChart.php index 1f0d53519..977af69de 100644 --- a/app/Filament/Admin/Resources/Nodes/Widgets/NodeCpuChart.php +++ b/app/Filament/Admin/Resources/Nodes/Widgets/NodeCpuChart.php @@ -32,7 +32,7 @@ class NodeCpuChart extends ChartWidget $this->cpuHistory = session("{$sessionKey}.cpu_history", []); $this->cpuHistory[] = [ 'cpu' => round($data['cpu_percent'] * $this->threads, 2), - 'timestamp' => now(auth()->user()->timezone ?? 'UTC')->format('H:i:s'), + 'timestamp' => now(user()->timezone ?? 'UTC')->format('H:i:s'), ]; $this->cpuHistory = array_slice($this->cpuHistory, -60); @@ -50,7 +50,7 @@ class NodeCpuChart extends ChartWidget ], ], 'labels' => array_column($this->cpuHistory, 'timestamp'), - 'locale' => auth()->user()->language ?? 'en', + 'locale' => user()->language ?? 'en', ]; } diff --git a/app/Filament/Admin/Resources/Nodes/Widgets/NodeMemoryChart.php b/app/Filament/Admin/Resources/Nodes/Widgets/NodeMemoryChart.php index c51442f69..df4ca0b4f 100644 --- a/app/Filament/Admin/Resources/Nodes/Widgets/NodeMemoryChart.php +++ b/app/Filament/Admin/Resources/Nodes/Widgets/NodeMemoryChart.php @@ -34,7 +34,7 @@ class NodeMemoryChart extends ChartWidget 'memory' => round(config('panel.use_binary_prefix') ? $data['memory_used'] / 1024 / 1024 / 1024 : $data['memory_used'] / 1000 / 1000 / 1000, 2), - 'timestamp' => now(auth()->user()->timezone ?? 'UTC')->format('H:i:s'), + 'timestamp' => now(user()->timezone ?? 'UTC')->format('H:i:s'), ]; $this->memoryHistory = array_slice($this->memoryHistory, -60); @@ -52,7 +52,7 @@ class NodeMemoryChart extends ChartWidget ], ], 'labels' => array_column($this->memoryHistory, 'timestamp'), - 'locale' => auth()->user()->language ?? 'en', + 'locale' => user()->language ?? 'en', ]; } diff --git a/app/Filament/Admin/Resources/Nodes/Widgets/NodeStorageChart.php b/app/Filament/Admin/Resources/Nodes/Widgets/NodeStorageChart.php index 028d4f9de..da59888c8 100644 --- a/app/Filament/Admin/Resources/Nodes/Widgets/NodeStorageChart.php +++ b/app/Filament/Admin/Resources/Nodes/Widgets/NodeStorageChart.php @@ -60,7 +60,7 @@ class NodeStorageChart extends ChartWidget ], ], 'labels' => [trans('admin/node.used'), trans('admin/node.unused')], - 'locale' => auth()->user()->language ?? 'en', + 'locale' => user()->language ?? 'en', ]; } diff --git a/app/Filament/Admin/Resources/Roles/RoleResource.php b/app/Filament/Admin/Resources/Roles/RoleResource.php index 9b9769fa2..5f3651e81 100644 --- a/app/Filament/Admin/Resources/Roles/RoleResource.php +++ b/app/Filament/Admin/Resources/Roles/RoleResource.php @@ -65,7 +65,7 @@ class RoleResource extends Resource public static function getNavigationGroup(): ?string { - return auth()->user()->getCustomization(CustomizationKey::TopNavigation) ? trans('admin/dashboard.advanced') : trans('admin/dashboard.user'); + return user()?->getCustomization(CustomizationKey::TopNavigation) ? trans('admin/dashboard.advanced') : trans('admin/dashboard.user'); } public static function getNavigationBadge(): ?string diff --git a/app/Filament/Admin/Resources/Servers/Pages/CreateServer.php b/app/Filament/Admin/Resources/Servers/Pages/CreateServer.php index a2161bdf0..70937c635 100644 --- a/app/Filament/Admin/Resources/Servers/Pages/CreateServer.php +++ b/app/Filament/Admin/Resources/Servers/Pages/CreateServer.php @@ -117,7 +117,7 @@ class CreateServer extends CreateRecord ->selectablePlaceholder(false) ->default(function () { /** @var ?Node $latestNode */ - $latestNode = auth()->user()->accessibleNodes()->latest()->first(); + $latestNode = user()?->accessibleNodes()->latest()->first(); $this->node = $latestNode; return $this->node?->id; @@ -128,7 +128,7 @@ class CreateServer extends CreateRecord 'md' => 2, ]) ->live() - ->relationship('node', 'name', fn (Builder $query) => $query->whereIn('id', auth()->user()->accessibleNodes()->pluck('id'))) + ->relationship('node', 'name', fn (Builder $query) => $query->whereIn('id', user()?->accessibleNodes()->pluck('id'))) ->searchable() ->required() ->preload() @@ -141,7 +141,7 @@ class CreateServer extends CreateRecord ->preload() ->prefixIcon('tabler-user') ->selectablePlaceholder(false) - ->default(auth()->user()->id) + ->default(user()?->id) ->label(trans('admin/server.owner')) ->columnSpan([ 'default' => 1, @@ -151,7 +151,7 @@ class CreateServer extends CreateRecord ->relationship('user', 'username') ->searchable(['username', 'email']) ->getOptionLabelFromRecordUsing(fn (User $user) => "$user->username ($user->email)") - ->createOptionAction(fn (Action $action) => $action->authorize(fn () => auth()->user()->can('create', User::class))) + ->createOptionAction(fn (Action $action) => $action->authorize(fn () => user()?->can('create', User::class))) ->createOptionForm([ TextInput::make('username') ->label(trans('admin/user.username')) @@ -212,7 +212,7 @@ class CreateServer extends CreateRecord ->where('node_id', $get('node_id')) ->whereNull('server_id'), ) - ->createOptionAction(fn (Action $action) => $action->authorize(fn (Get $get) => auth()->user()->can('create', Node::find($get('node_id'))))) + ->createOptionAction(fn (Action $action) => $action->authorize(fn (Get $get) => user()?->can('create', Node::find($get('node_id'))))) ->createOptionForm(function (Get $get) { $getPage = $get; diff --git a/app/Filament/Admin/Resources/Servers/Pages/EditServer.php b/app/Filament/Admin/Resources/Servers/Pages/EditServer.php index 7dc164adf..53cd2047a 100644 --- a/app/Filament/Admin/Resources/Servers/Pages/EditServer.php +++ b/app/Filament/Admin/Resources/Servers/Pages/EditServer.php @@ -210,7 +210,7 @@ class EditServer extends EditRecord ->maxLength(255), Select::make('node_id') ->label(trans('admin/server.node')) - ->relationship('node', 'name', fn (Builder $query) => $query->whereIn('id', auth()->user()->accessibleNodes()->pluck('id'))) + ->relationship('node', 'name', fn (Builder $query) => $query->whereIn('id', user()?->accessibleNodes()->pluck('id'))) ->columnSpan([ 'default' => 2, 'sm' => 1, @@ -916,7 +916,7 @@ class EditServer extends EditRecord } }) ->hidden(fn () => $canForceDelete) - ->authorize(fn (Server $server) => auth()->user()->can('delete server', $server)), + ->authorize(fn (Server $server) => user()?->can('delete server', $server)), Action::make('ForceDelete') ->color('danger') ->label(trans('filament-actions::force-delete.single.label')) @@ -933,7 +933,7 @@ class EditServer extends EditRecord } }) ->visible(fn () => $canForceDelete) - ->authorize(fn (Server $server) => auth()->user()->can('delete server', $server)), + ->authorize(fn (Server $server) => user()?->can('delete server', $server)), Action::make('console') ->label(trans('admin/server.console')) ->icon('tabler-terminal') diff --git a/app/Filament/Admin/Resources/Servers/Pages/ListServers.php b/app/Filament/Admin/Resources/Servers/Pages/ListServers.php index 9b09c3100..b2a3b200f 100644 --- a/app/Filament/Admin/Resources/Servers/Pages/ListServers.php +++ b/app/Filament/Admin/Resources/Servers/Pages/ListServers.php @@ -69,7 +69,7 @@ class ListServers extends ListRecords ->searchable(), SelectColumn::make('allocation_id') ->label(trans('admin/server.primary_allocation')) - ->hidden(fn () => !auth()->user()->can('update server')) // TODO: update to policy check (fn (Server $server) --> $server is empty) + ->hidden(fn () => !user()?->can('update server')) // TODO: update to policy check (fn (Server $server) --> $server is empty) ->disabled(fn (Server $server) => $server->allocations->count() <= 1) ->options(fn (Server $server) => $server->allocations->mapWithKeys(fn ($allocation) => [$allocation->id => $allocation->address])) ->selectablePlaceholder(fn (Server $server) => $server->allocations->count() <= 1) @@ -77,7 +77,7 @@ class ListServers extends ListRecords ->sortable(), TextColumn::make('allocation_id_readonly') ->label(trans('admin/server.primary_allocation')) - ->hidden(fn () => auth()->user()->can('update server')) // TODO: update to policy check (fn (Server $server) --> $server is empty) + ->hidden(fn () => user()?->can('update server')) // TODO: update to policy check (fn (Server $server) --> $server is empty) ->state(fn (Server $server) => $server->allocation->address ?? trans('admin/server.none')), TextColumn::make('image')->hidden(), TextColumn::make('backups_count') @@ -90,7 +90,7 @@ class ListServers extends ListRecords Action::make('View') ->label(trans('admin/server.view')) ->url(fn (Server $server) => Console::getUrl(panel: 'server', tenant: $server)) - ->authorize(fn (Server $server) => auth()->user()->canAccessTenant($server)), + ->authorize(fn (Server $server) => user()?->canAccessTenant($server)), EditAction::make(), ]) ->emptyStateIcon('tabler-brand-docker') diff --git a/app/Filament/Admin/Resources/Servers/ServerResource.php b/app/Filament/Admin/Resources/Servers/ServerResource.php index 433813272..5273ddcc9 100644 --- a/app/Filament/Admin/Resources/Servers/ServerResource.php +++ b/app/Filament/Admin/Resources/Servers/ServerResource.php @@ -47,7 +47,7 @@ class ServerResource extends Resource public static function getNavigationGroup(): ?string { - return auth()->user()->getCustomization(CustomizationKey::TopNavigation) ? false : trans('admin/dashboard.server'); + return user()?->getCustomization(CustomizationKey::TopNavigation) ? false : trans('admin/dashboard.server'); } public static function getNavigationBadge(): ?string @@ -103,6 +103,6 @@ class ServerResource extends Resource { $query = parent::getEloquentQuery(); - return $query->whereIn('node_id', auth()->user()->accessibleNodes()->pluck('id')); + return $query->whereIn('node_id', user()?->accessibleNodes()->pluck('id')); } } diff --git a/app/Filament/Admin/Resources/Users/Pages/EditUser.php b/app/Filament/Admin/Resources/Users/Pages/EditUser.php index efb54950f..4941c56ad 100644 --- a/app/Filament/Admin/Resources/Users/Pages/EditUser.php +++ b/app/Filament/Admin/Resources/Users/Pages/EditUser.php @@ -32,8 +32,8 @@ class EditUser extends EditRecord { return [ DeleteAction::make() - ->label(fn (User $user) => auth()->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) => auth()->user()->id === $user->id || $user->servers()->count() > 0), + ->label(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), $this->getSaveFormAction()->formId('form'), ]; } diff --git a/app/Filament/Admin/Resources/Users/RelationManagers/ServersRelationManager.php b/app/Filament/Admin/Resources/Users/RelationManagers/ServersRelationManager.php index a257cde15..cab9c7a80 100644 --- a/app/Filament/Admin/Resources/Users/RelationManagers/ServersRelationManager.php +++ b/app/Filament/Admin/Resources/Users/RelationManagers/ServersRelationManager.php @@ -67,7 +67,7 @@ class ServersRelationManager extends RelationManager ->sortable(), SelectColumn::make('allocation_id') ->label(trans('admin/server.primary_allocation')) - ->hidden(fn () => !auth()->user()->can('update server')) // TODO: update to policy check (fn (Server $server) --> $server is empty) + ->hidden(fn () => !user()?->can('update server')) // TODO: update to policy check (fn (Server $server) --> $server is empty) ->disabled(fn (Server $server) => $server->allocations->count() <= 1) ->options(fn (Server $server) => $server->allocations->mapWithKeys(fn ($allocation) => [$allocation->id => $allocation->address])) ->selectablePlaceholder(fn (Server $server) => $server->allocations->count() <= 1) @@ -75,7 +75,7 @@ class ServersRelationManager extends RelationManager ->sortable(), TextColumn::make('allocation_id_readonly') ->label(trans('admin/server.primary_allocation')) - ->hidden(fn () => auth()->user()->can('update server')) // TODO: update to policy check (fn (Server $server) --> $server is empty) + ->hidden(fn () => user()?->can('update server')) // TODO: update to policy check (fn (Server $server) --> $server is empty) ->state(fn (Server $server) => $server->allocation->address ?? trans('admin/server.none')), TextColumn::make('databases_count') ->counts('databases') diff --git a/app/Filament/Admin/Resources/Users/UserResource.php b/app/Filament/Admin/Resources/Users/UserResource.php index 5f47e128f..7fe225fc1 100644 --- a/app/Filament/Admin/Resources/Users/UserResource.php +++ b/app/Filament/Admin/Resources/Users/UserResource.php @@ -61,7 +61,7 @@ class UserResource extends Resource public static function getNavigationGroup(): ?string { - return auth()->user()->getCustomization(CustomizationKey::TopNavigation) ? false : trans('admin/dashboard.user'); + return user()?->getCustomization(CustomizationKey::TopNavigation) ? false : trans('admin/dashboard.user'); } public static function getNavigationBadge(): ?string @@ -110,7 +110,7 @@ class UserResource extends Resource ->hidden(fn ($record) => static::canEdit($record)), EditAction::make(), ]) - ->checkIfRecordIsSelectableUsing(fn (User $user) => auth()->user()->id !== $user->id && !$user->servers_count) + ->checkIfRecordIsSelectableUsing(fn (User $user) => user()?->id !== $user->id && !$user->servers_count) ->groupedBulkActions([ DeleteBulkAction::make(), ]); diff --git a/app/Filament/App/Resources/Servers/Pages/ListServers.php b/app/Filament/App/Resources/Servers/Pages/ListServers.php index 4c86174c0..cf59ccf8e 100644 --- a/app/Filament/App/Resources/Servers/Pages/ListServers.php +++ b/app/Filament/App/Resources/Servers/Pages/ListServers.php @@ -102,9 +102,9 @@ class ListServers extends ListRecords public function table(Table $table): Table { - $baseQuery = auth()->user()->accessibleServers(); + $baseQuery = user()?->accessibleServers(); - $usingGrid = auth()->user()->getCustomization(CustomizationKey::DashboardLayout) === 'grid'; + $usingGrid = user()?->getCustomization(CustomizationKey::DashboardLayout) === 'grid'; return $table ->paginated(false) @@ -139,9 +139,9 @@ class ListServers extends ListRecords public function getTabs(): array { - $all = auth()->user()->accessibleServers(); - $my = (clone $all)->where('owner_id', auth()->user()->id); - $other = (clone $all)->whereNot('owner_id', auth()->user()->id); + $all = user()?->accessibleServers(); + $my = (clone $all)->where('owner_id', user()?->id); + $other = (clone $all)->whereNot('owner_id', user()?->id); return [ 'my' => Tab::make('my') @@ -232,21 +232,21 @@ class ListServers extends ListRecords ->label(trans('server/console.power_actions.start')) ->color('primary') ->icon('tabler-player-play-filled') - ->authorize(fn (Server $server) => auth()->user()->can(Permission::ACTION_CONTROL_START, $server)) + ->authorize(fn (Server $server) => user()?->can(Permission::ACTION_CONTROL_START, $server)) ->visible(fn (Server $server) => $server->retrieveStatus()->isStartable()) ->dispatch('powerAction', fn (Server $server) => ['server' => $server, 'action' => 'start']), Action::make('restart') ->label(trans('server/console.power_actions.restart')) ->color('gray') ->icon('tabler-reload') - ->authorize(fn (Server $server) => auth()->user()->can(Permission::ACTION_CONTROL_RESTART, $server)) + ->authorize(fn (Server $server) => user()?->can(Permission::ACTION_CONTROL_RESTART, $server)) ->visible(fn (Server $server) => $server->retrieveStatus()->isRestartable()) ->dispatch('powerAction', fn (Server $server) => ['server' => $server, 'action' => 'restart']), Action::make('stop') ->label(trans('server/console.power_actions.stop')) ->color('danger') ->icon('tabler-player-stop-filled') - ->authorize(fn (Server $server) => auth()->user()->can(Permission::ACTION_CONTROL_STOP, $server)) + ->authorize(fn (Server $server) => user()?->can(Permission::ACTION_CONTROL_STOP, $server)) ->visible(fn (Server $server) => $server->retrieveStatus()->isStoppable() && !$server->retrieveStatus()->isKillable()) ->dispatch('powerAction', fn (Server $server) => ['server' => $server, 'action' => 'stop']), Action::make('kill') @@ -254,7 +254,7 @@ class ListServers extends ListRecords ->color('danger') ->icon('tabler-alert-square') ->tooltip(trans('server/console.power_actions.kill_tooltip')) - ->authorize(fn (Server $server) => auth()->user()->can(Permission::ACTION_CONTROL_STOP, $server)) + ->authorize(fn (Server $server) => user()?->can(Permission::ACTION_CONTROL_STOP, $server)) ->visible(fn (Server $server) => $server->retrieveStatus()->isKillable()) ->dispatch('powerAction', fn (Server $server) => ['server' => $server, 'action' => 'kill']), ]) diff --git a/app/Filament/Components/Actions/ExportEggAction.php b/app/Filament/Components/Actions/ExportEggAction.php index ad3d8a81b..0f5221d2c 100644 --- a/app/Filament/Components/Actions/ExportEggAction.php +++ b/app/Filament/Components/Actions/ExportEggAction.php @@ -24,7 +24,7 @@ class ExportEggAction extends Action $this->tableIcon('tabler-download'); - $this->authorize(fn () => auth()->user()->can('export egg')); + $this->authorize(fn () => user()?->can('export egg')); $this->modalHeading(fn (Egg $egg) => trans('filament-actions::export.modal.actions.export.label') . ' ' . $egg->name); diff --git a/app/Filament/Components/Actions/ExportScheduleAction.php b/app/Filament/Components/Actions/ExportScheduleAction.php index f2e085cc3..6e461767b 100644 --- a/app/Filament/Components/Actions/ExportScheduleAction.php +++ b/app/Filament/Components/Actions/ExportScheduleAction.php @@ -25,7 +25,7 @@ class ExportScheduleAction extends Action $this->label(trans('filament-actions::export.modal.actions.export.label')); - $this->authorize(fn () => auth()->user()->can(Permission::ACTION_SCHEDULE_READ, $server)); + $this->authorize(fn () => user()?->can(Permission::ACTION_SCHEDULE_READ, $server)); $this->action(fn (ScheduleExporterService $service, Schedule $schedule) => response()->streamDownload(function () use ($service, $schedule) { echo $service->handle($schedule); diff --git a/app/Filament/Components/Actions/ImportEggAction.php b/app/Filament/Components/Actions/ImportEggAction.php index 77a156d57..77a65c2e7 100644 --- a/app/Filament/Components/Actions/ImportEggAction.php +++ b/app/Filament/Components/Actions/ImportEggAction.php @@ -35,7 +35,7 @@ class ImportEggAction extends Action $this->label(trans('filament-actions::import.modal.actions.import.label')); - $this->authorize(fn () => auth()->user()->can('import egg')); + $this->authorize(fn () => user()?->can('import egg')); $this->action(function (array $data, EggImporterService $eggImportService): void { $eggs = array_merge(collect($data['urls'])->flatten()->whereNotNull()->unique()->all(), Arr::wrap($data['files'])); diff --git a/app/Filament/Components/Actions/ImportScheduleAction.php b/app/Filament/Components/Actions/ImportScheduleAction.php index 45e0b5ca5..ce579a8d9 100644 --- a/app/Filament/Components/Actions/ImportScheduleAction.php +++ b/app/Filament/Components/Actions/ImportScheduleAction.php @@ -33,7 +33,7 @@ class ImportScheduleAction extends Action $this->label(trans('filament-actions::import.modal.actions.import.label')); - $this->authorize(fn () => auth()->user()->can(Permission::ACTION_SCHEDULE_CREATE, $server)); + $this->authorize(fn () => user()?->can(Permission::ACTION_SCHEDULE_CREATE, $server)); $this->schema([ Tabs::make('Tabs') diff --git a/app/Filament/Components/Actions/RotateDatabasePasswordAction.php b/app/Filament/Components/Actions/RotateDatabasePasswordAction.php index bd11259b8..750b69dba 100644 --- a/app/Filament/Components/Actions/RotateDatabasePasswordAction.php +++ b/app/Filament/Components/Actions/RotateDatabasePasswordAction.php @@ -26,7 +26,7 @@ class RotateDatabasePasswordAction extends Action $this->icon('tabler-refresh'); - $this->authorize(fn (Database $database) => auth()->user()->can('update', $database)); + $this->authorize(fn (Database $database) => user()?->can('update', $database)); $this->modalHeading(trans('admin/databasehost.rotate_password')); @@ -56,7 +56,7 @@ class RotateDatabasePasswordAction extends Action } catch (Exception $exception) { Notification::make() ->title(trans('admin/databasehost.rotate_error')) - ->body(fn () => auth()->user()->canAccessPanel(Filament::getPanel('admin')) ? $exception->getMessage() : null) + ->body(fn () => user()?->canAccessPanel(Filament::getPanel('admin')) ? $exception->getMessage() : null) ->danger() ->send(); diff --git a/app/Filament/Components/Actions/UpdateEggAction.php b/app/Filament/Components/Actions/UpdateEggAction.php index 4fb57d101..5f126abf1 100644 --- a/app/Filament/Components/Actions/UpdateEggAction.php +++ b/app/Filament/Components/Actions/UpdateEggAction.php @@ -59,7 +59,7 @@ class UpdateEggAction extends Action ->send(); }); - $this->authorize(fn () => auth()->user()->can('import egg')); + $this->authorize(fn () => user()?->can('import egg')); $this->visible(fn (Egg $egg) => cache()->get("eggs.$egg->uuid.update", false)); } diff --git a/app/Filament/Components/Actions/UpdateEggBulkAction.php b/app/Filament/Components/Actions/UpdateEggBulkAction.php index 43da6afd4..d2d26a32c 100644 --- a/app/Filament/Components/Actions/UpdateEggBulkAction.php +++ b/app/Filament/Components/Actions/UpdateEggBulkAction.php @@ -73,7 +73,7 @@ class UpdateEggBulkAction extends BulkAction ->send(); }); - $this->authorize(fn () => auth()->user()->can('import egg')); + $this->authorize(fn () => user()?->can('import egg')); $this->deselectRecordsAfterCompletion(); } diff --git a/app/Filament/Components/Tables/Columns/DateTimeColumn.php b/app/Filament/Components/Tables/Columns/DateTimeColumn.php index 0677466e9..7895e652e 100644 --- a/app/Filament/Components/Tables/Columns/DateTimeColumn.php +++ b/app/Filament/Components/Tables/Columns/DateTimeColumn.php @@ -24,6 +24,6 @@ class DateTimeColumn extends TextColumn public function getTimezone(): string { - return auth()->user()->timezone ?? config('app.timezone', 'UTC'); + return user()->timezone ?? config('app.timezone', 'UTC'); } } diff --git a/app/Filament/Pages/Auth/EditProfile.php b/app/Filament/Pages/Auth/EditProfile.php index 999628ef6..7b6a81aea 100644 --- a/app/Filament/Pages/Auth/EditProfile.php +++ b/app/Filament/Pages/Auth/EditProfile.php @@ -181,10 +181,10 @@ class EditProfile extends BaseEditProfile ->color(Color::hex($schema->getHexColor())) ->action(function (UserUpdateService $updateService) use ($id, $name, $unlink) { if ($unlink) { - $oauth = auth()->user()->oauth; + $oauth = user()?->oauth; unset($oauth[$id]); - $updateService->handle(auth()->user(), ['oauth' => $oauth]); + $updateService->handle(user(), ['oauth' => $oauth]); $this->fillForm(); diff --git a/app/Filament/Server/Pages/Console.php b/app/Filament/Server/Pages/Console.php index d0c60d13b..4f454dfe1 100644 --- a/app/Filament/Server/Pages/Console.php +++ b/app/Filament/Server/Pages/Console.php @@ -87,7 +87,7 @@ class Console extends Page { return [ 'server' => Filament::getTenant(), - 'user' => auth()->user(), + 'user' => user(), ]; } @@ -164,7 +164,7 @@ class Console extends Page ->label(trans('server/console.power_actions.start')) ->color('primary') ->icon('tabler-player-play-filled') - ->authorize(fn (Server $server) => auth()->user()->can(Permission::ACTION_CONTROL_START, $server)) + ->authorize(fn (Server $server) => user()?->can(Permission::ACTION_CONTROL_START, $server)) ->disabled(fn (Server $server) => $server->isInConflictState() || !$this->status->isStartable()) ->action(fn (Server $server) => $this->dispatch('setServerState', uuid: $server->uuid, state: 'start')) ->size(Size::ExtraLarge), @@ -172,7 +172,7 @@ class Console extends Page ->label(trans('server/console.power_actions.restart')) ->color('gray') ->icon('tabler-reload') - ->authorize(fn (Server $server) => auth()->user()->can(Permission::ACTION_CONTROL_RESTART, $server)) + ->authorize(fn (Server $server) => user()?->can(Permission::ACTION_CONTROL_RESTART, $server)) ->disabled(fn (Server $server) => $server->isInConflictState() || !$this->status->isRestartable()) ->action(fn (Server $server) => $this->dispatch('setServerState', uuid: $server->uuid, state: 'restart')) ->size(Size::ExtraLarge), @@ -180,7 +180,7 @@ class Console extends Page ->label(trans('server/console.power_actions.stop')) ->color('danger') ->icon('tabler-player-stop-filled') - ->authorize(fn (Server $server) => auth()->user()->can(Permission::ACTION_CONTROL_STOP, $server)) + ->authorize(fn (Server $server) => user()?->can(Permission::ACTION_CONTROL_STOP, $server)) ->visible(fn () => !$this->status->isKillable()) ->disabled(fn (Server $server) => $server->isInConflictState() || !$this->status->isStoppable()) ->action(fn (Server $server) => $this->dispatch('setServerState', uuid: $server->uuid, state: 'stop')) @@ -191,7 +191,7 @@ class Console extends Page ->icon('tabler-alert-square') ->tooltip(trans('server/console.power_actions.kill_tooltip')) ->requiresConfirmation() - ->authorize(fn (Server $server) => auth()->user()->can(Permission::ACTION_CONTROL_STOP, $server)) + ->authorize(fn (Server $server) => user()?->can(Permission::ACTION_CONTROL_STOP, $server)) ->visible(fn () => $this->status->isKillable()) ->disabled(fn (Server $server) => $server->isInConflictState() || !$this->status->isKillable()) ->action(fn (Server $server) => $this->dispatch('setServerState', uuid: $server->uuid, state: 'kill')) diff --git a/app/Filament/Server/Pages/Settings.php b/app/Filament/Server/Pages/Settings.php index a95ddd25c..a917e411a 100644 --- a/app/Filament/Server/Pages/Settings.php +++ b/app/Filament/Server/Pages/Settings.php @@ -51,7 +51,7 @@ class Settings extends ServerFormPage ->schema([ TextInput::make('name') ->label(trans('server/setting.server_info.name')) - ->disabled(fn (Server $server) => !auth()->user()->can(Permission::ACTION_SETTINGS_RENAME, $server)) + ->disabled(fn (Server $server) => !user()?->can(Permission::ACTION_SETTINGS_RENAME, $server)) ->required() ->columnSpan([ 'default' => 1, @@ -64,7 +64,7 @@ class Settings extends ServerFormPage Textarea::make('description') ->label(trans('server/setting.server_info.description')) ->hidden(!config('panel.editable_server_descriptions')) - ->disabled(fn (Server $server) => !auth()->user()->can(Permission::ACTION_SETTINGS_RENAME, $server)) + ->disabled(fn (Server $server) => !user()?->can(Permission::ACTION_SETTINGS_RENAME, $server)) ->columnSpan([ 'default' => 1, 'sm' => 2, @@ -153,7 +153,7 @@ class Settings extends ServerFormPage ]), Fieldset::make(trans('server/setting.server_info.sftp.title')) ->columnSpanFull() - ->hidden(fn (Server $server) => !auth()->user()->can(Permission::ACTION_FILE_SFTP, $server)) + ->hidden(fn (Server $server) => !user()?->can(Permission::ACTION_FILE_SFTP, $server)) ->columns([ 'default' => 1, 'sm' => 1, @@ -174,20 +174,20 @@ class Settings extends ServerFormPage ->url(function (Server $server) { $fqdn = $server->node->daemon_sftp_alias ?? $server->node->fqdn; - return 'sftp://' . rawurlencode(auth()->user()->username) . '.' . $server->uuid_short . '@' . $fqdn . ':' . $server->node->daemon_sftp; + return 'sftp://' . rawurlencode(user()?->username) . '.' . $server->uuid_short . '@' . $fqdn . ':' . $server->node->daemon_sftp; }), ) ->formatStateUsing(function (Server $server) { $fqdn = $server->node->daemon_sftp_alias ?? $server->node->fqdn; - return 'sftp://' . rawurlencode(auth()->user()->username) . '.' . $server->uuid_short . '@' . $fqdn . ':' . $server->node->daemon_sftp; + return 'sftp://' . rawurlencode(user()?->username) . '.' . $server->uuid_short . '@' . $fqdn . ':' . $server->node->daemon_sftp; }), TextInput::make('username') ->label(trans('server/setting.server_info.sftp.username')) ->columnSpan(1) ->copyable() ->disabled() - ->formatStateUsing(fn (Server $server) => auth()->user()->username . '.' . $server->uuid_short), + ->formatStateUsing(fn (Server $server) => user()?->username . '.' . $server->uuid_short), TextEntry::make('password') ->label(trans('server/setting.server_info.sftp.password')) ->columnSpan(1) @@ -195,19 +195,19 @@ class Settings extends ServerFormPage ]), ]), Section::make(trans('server/setting.reinstall.title')) - ->hidden(fn (Server $server) => !auth()->user()->can(Permission::ACTION_SETTINGS_REINSTALL, $server)) + ->hidden(fn (Server $server) => !user()?->can(Permission::ACTION_SETTINGS_REINSTALL, $server)) ->columnSpanFull() ->footerActions([ Action::make('reinstall') ->label(trans('server/setting.reinstall.action')) ->color('danger') - ->disabled(fn (Server $server) => !auth()->user()->can(Permission::ACTION_SETTINGS_REINSTALL, $server)) + ->disabled(fn (Server $server) => !user()?->can(Permission::ACTION_SETTINGS_REINSTALL, $server)) ->requiresConfirmation() ->modalHeading(trans('server/setting.reinstall.modal')) ->modalDescription(trans('server/setting.reinstall.modal_description')) ->modalSubmitActionLabel(trans('server/setting.reinstall.yes')) ->action(function (Server $server, ReinstallServerService $reinstallService) { - abort_unless(auth()->user()->can(Permission::ACTION_SETTINGS_REINSTALL, $server), 403); + abort_unless(user()?->can(Permission::ACTION_SETTINGS_REINSTALL, $server), 403); try { $reinstallService->handle($server); @@ -246,7 +246,7 @@ class Settings extends ServerFormPage public function updateName(string $name, Server $server): void { - abort_unless(auth()->user()->can(Permission::ACTION_SETTINGS_RENAME, $server), 403); + abort_unless(user()?->can(Permission::ACTION_SETTINGS_RENAME, $server), 403); $original = $server->name; @@ -277,7 +277,7 @@ class Settings extends ServerFormPage public function updateDescription(string $description, Server $server): void { - abort_unless(auth()->user()->can(Permission::ACTION_SETTINGS_RENAME, $server) && config('panel.editable_server_descriptions'), 403); + abort_unless(user()?->can(Permission::ACTION_SETTINGS_RENAME, $server) && config('panel.editable_server_descriptions'), 403); $original = $server->description; diff --git a/app/Filament/Server/Pages/Startup.php b/app/Filament/Server/Pages/Startup.php index 6464eb175..887d0feda 100644 --- a/app/Filament/Server/Pages/Startup.php +++ b/app/Filament/Server/Pages/Startup.php @@ -68,7 +68,7 @@ class Startup extends ServerFormPage ->label(trans('server/startup.docker_image')) ->live() ->visible(fn (Server $server) => in_array($server->image, $server->egg->docker_images)) - ->disabled(fn (Server $server) => !auth()->user()->can(Permission::ACTION_STARTUP_DOCKER_IMAGE, $server)) + ->disabled(fn (Server $server) => !user()?->can(Permission::ACTION_STARTUP_DOCKER_IMAGE, $server)) ->afterStateUpdated(function ($state, Server $server) { $original = $server->image; $server->forceFill(['image' => $state])->saveOrFail(); @@ -108,7 +108,7 @@ class Startup extends ServerFormPage return $query->where('egg_variables.user_viewable', true)->orderByPowerJoins('variable.sort'); }) ->grid() - ->disabled(fn (Server $server) => !auth()->user()->can(Permission::ACTION_STARTUP_UPDATE, $server)) + ->disabled(fn (Server $server) => !user()?->can(Permission::ACTION_STARTUP_UPDATE, $server)) ->reorderable(false)->addable(false)->deletable(false) ->schema([ StartupVariable::make('variable_value') @@ -124,12 +124,12 @@ class Startup extends ServerFormPage protected function authorizeAccess(): void { - abort_unless(auth()->user()->can(Permission::ACTION_STARTUP_READ, Filament::getTenant()), 403); + abort_unless(user()?->can(Permission::ACTION_STARTUP_READ, Filament::getTenant()), 403); } public static function canAccess(): bool { - return parent::canAccess() && auth()->user()->can(Permission::ACTION_STARTUP_READ, Filament::getTenant()); + return parent::canAccess() && user()?->can(Permission::ACTION_STARTUP_READ, Filament::getTenant()); } public function update(?string $state, ServerVariable $serverVariable): null diff --git a/app/Filament/Server/Resources/Activities/ActivityResource.php b/app/Filament/Server/Resources/Activities/ActivityResource.php index f321c1af4..30dd56bfd 100644 --- a/app/Filament/Server/Resources/Activities/ActivityResource.php +++ b/app/Filament/Server/Resources/Activities/ActivityResource.php @@ -73,14 +73,14 @@ class ActivityResource extends Resource $user = $activityLog->actor->username; // Only show the email if the actor is the server owner/ a subuser or if the viewing user is an admin - if (auth()->user()->isAdmin() || $server->owner_id === $activityLog->actor->id || $server->subusers->where('user_id', $activityLog->actor->id)->first()) { + if (user()?->isAdmin() || $server->owner_id === $activityLog->actor->id || $server->subusers->where('user_id', $activityLog->actor->id)->first()) { $user .= " ({$activityLog->actor->email})"; } return $user; }) - ->tooltip(fn (ActivityLog $activityLog) => auth()->user()->can('seeIps activityLog') ? $activityLog->ip : '') - ->url(fn (ActivityLog $activityLog) => $activityLog->actor instanceof User && auth()->user()->can('update', $activityLog->actor) ? EditUser::getUrl(['record' => $activityLog->actor], panel: 'admin') : '') + ->tooltip(fn (ActivityLog $activityLog) => user()?->can('seeIps activityLog') ? $activityLog->ip : '') + ->url(fn (ActivityLog $activityLog) => $activityLog->actor instanceof User && user()?->can('update', $activityLog->actor) ? EditUser::getUrl(['record' => $activityLog->actor], panel: 'admin') : '') ->grow(false), DateTimeColumn::make('timestamp') ->label(trans('server/activity.timestamp')) @@ -106,11 +106,11 @@ class ActivityResource extends Resource $user = $activityLog->actor->username; // Only show the email if the actor is the server owner/ a subuser or if the viewing user is an admin - if (auth()->user()->isAdmin() || $server->owner_id === $activityLog->actor->id || $server->subusers->where('user_id', $activityLog->actor->id)->first()) { + if (user()?->isAdmin() || $server->owner_id === $activityLog->actor->id || $server->subusers->where('user_id', $activityLog->actor->id)->first()) { $user .= " ({$activityLog->actor->email})"; } - if (auth()->user()->can('seeIps activityLog')) { + if (user()?->can('seeIps activityLog')) { $user .= " - $activityLog->ip"; } @@ -120,7 +120,7 @@ class ActivityResource extends Resource Action::make('edit') ->label(trans('filament-actions::edit.single.label')) ->icon('tabler-edit') - ->visible(fn (ActivityLog $activityLog) => $activityLog->actor instanceof User && auth()->user()->can('update', $activityLog->actor)) + ->visible(fn (ActivityLog $activityLog) => $activityLog->actor instanceof User && user()?->can('update', $activityLog->actor)) ->url(fn (ActivityLog $activityLog) => EditUser::getUrl(['record' => $activityLog->actor], panel: 'admin')) ), DateTimePicker::make('timestamp') @@ -166,7 +166,7 @@ class ActivityResource extends Resource public static function canViewAny(): bool { - return auth()->user()->can(Permission::ACTION_ACTIVITY_READ, Filament::getTenant()); + return user()?->can(Permission::ACTION_ACTIVITY_READ, Filament::getTenant()); } /** @return array */ diff --git a/app/Filament/Server/Resources/Allocations/AllocationResource.php b/app/Filament/Server/Resources/Allocations/AllocationResource.php index 20e615e2f..92e70c554 100644 --- a/app/Filament/Server/Resources/Allocations/AllocationResource.php +++ b/app/Filament/Server/Resources/Allocations/AllocationResource.php @@ -58,7 +58,7 @@ class AllocationResource extends Resource TextInputColumn::make('notes') ->label(trans('server/network.notes')) ->visibleFrom('sm') - ->disabled(fn () => !auth()->user()->can(Permission::ACTION_ALLOCATION_UPDATE, $server)) + ->disabled(fn () => !user()?->can(Permission::ACTION_ALLOCATION_UPDATE, $server)) ->placeholder(trans('server/network.no_notes')), IconColumn::make('primary') ->icon(fn ($state) => match ($state) { @@ -70,13 +70,13 @@ class AllocationResource extends Resource default => 'gray', }) ->tooltip(fn (Allocation $allocation) => $allocation->id === $server->allocation_id ? trans('server/network.primary') : trans('server/network.make_primary')) - ->action(fn (Allocation $allocation) => auth()->user()->can(PERMISSION::ACTION_ALLOCATION_UPDATE, $server) && $server->update(['allocation_id' => $allocation->id])) + ->action(fn (Allocation $allocation) => user()?->can(PERMISSION::ACTION_ALLOCATION_UPDATE, $server) && $server->update(['allocation_id' => $allocation->id])) ->default(fn (Allocation $allocation) => $allocation->id === $server->allocation_id) ->label(trans('server/network.primary')), ]) ->recordActions([ DetachAction::make() - ->authorize(fn () => auth()->user()->can(Permission::ACTION_ALLOCATION_DELETE, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_ALLOCATION_DELETE, $server)) ->label(trans('server/network.delete')) ->icon('tabler-trash') ->action(function (Allocation $allocation) { @@ -96,7 +96,7 @@ class AllocationResource extends Resource Action::make('addAllocation') ->hiddenLabel()->iconButton()->iconSize(IconSize::ExtraLarge) ->icon(fn () => $server->allocations()->count() >= $server->allocation_limit ? 'tabler-network-off' : 'tabler-network') - ->authorize(fn () => auth()->user()->can(Permission::ACTION_ALLOCATION_CREATE, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_ALLOCATION_CREATE, $server)) ->tooltip(fn () => $server->allocations()->count() >= $server->allocation_limit ? trans('server/network.limit') : trans('server/network.add')) ->hidden(fn () => !config('panel.client_features.allocations.enabled')) ->disabled(fn () => $server->allocations()->count() >= $server->allocation_limit) @@ -118,22 +118,22 @@ class AllocationResource extends Resource public static function canViewAny(): bool { - return auth()->user()->can(Permission::ACTION_ALLOCATION_READ, Filament::getTenant()); + return user()?->can(Permission::ACTION_ALLOCATION_READ, Filament::getTenant()); } public static function canCreate(): bool { - return auth()->user()->can(Permission::ACTION_ALLOCATION_CREATE, Filament::getTenant()); + return user()?->can(Permission::ACTION_ALLOCATION_CREATE, Filament::getTenant()); } public static function canEdit(Model $record): bool { - return auth()->user()->can(Permission::ACTION_ALLOCATION_UPDATE, Filament::getTenant()); + return user()?->can(Permission::ACTION_ALLOCATION_UPDATE, Filament::getTenant()); } public static function canDelete(Model $record): bool { - return auth()->user()->can(Permission::ACTION_ALLOCATION_DELETE, Filament::getTenant()); + return user()?->can(Permission::ACTION_ALLOCATION_DELETE, Filament::getTenant()); } /** @return array */ diff --git a/app/Filament/Server/Resources/Backups/BackupResource.php b/app/Filament/Server/Resources/Backups/BackupResource.php index d62196d15..7506675be 100644 --- a/app/Filament/Server/Resources/Backups/BackupResource.php +++ b/app/Filament/Server/Resources/Backups/BackupResource.php @@ -129,7 +129,7 @@ class BackupResource extends Resource ActionGroup::make([ Action::make('rename') ->icon('tabler-pencil') - ->authorize(fn () => auth()->user()->can(Permission::ACTION_BACKUP_DELETE, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_BACKUP_DELETE, $server)) ->label(trans('server/backup.actions.rename.title')) ->schema([ TextInput::make('name') @@ -160,7 +160,7 @@ class BackupResource extends Resource Action::make('lock') ->iconSize(IconSize::Large) ->icon(fn (Backup $backup) => !$backup->is_locked ? 'tabler-lock' : 'tabler-lock-open') - ->authorize(fn () => auth()->user()->can(Permission::ACTION_BACKUP_DELETE, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_BACKUP_DELETE, $server)) ->label(fn (Backup $backup) => !$backup->is_locked ? trans('server/backup.actions.lock.lock') : trans('server/backup.actions.lock.unlock')) ->action(fn (BackupController $backupController, Backup $backup, Request $request) => $backupController->toggleLock($request, $server, $backup)) ->visible(fn (Backup $backup) => $backup->status === BackupStatus::Successful), @@ -169,7 +169,7 @@ class BackupResource extends Resource ->iconSize(IconSize::Large) ->color('primary') ->icon('tabler-download') - ->authorize(fn () => auth()->user()->can(Permission::ACTION_BACKUP_DOWNLOAD, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_BACKUP_DOWNLOAD, $server)) ->url(fn (DownloadLinkService $downloadLinkService, Backup $backup, Request $request) => $downloadLinkService->handle($backup, $request->user()), true) ->visible(fn (Backup $backup) => $backup->status === BackupStatus::Successful), Action::make('restore') @@ -177,7 +177,7 @@ class BackupResource extends Resource ->iconSize(IconSize::Large) ->color('success') ->icon('tabler-folder-up') - ->authorize(fn () => auth()->user()->can(Permission::ACTION_BACKUP_RESTORE, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_BACKUP_RESTORE, $server)) ->schema([ TextEntry::make('stop_info') ->hiddenLabel() @@ -210,7 +210,7 @@ class BackupResource extends Resource // If the backup is for an S3 file we need to generate a unique Download link for // it that will allow daemon to actually access the file. if ($backup->disk === Backup::ADAPTER_AWS_S3) { - $url = $downloadLinkService->handle($backup, auth()->user()); + $url = $downloadLinkService->handle($backup, user()); } // Update the status right away for the server so that we know not to allow certain @@ -258,7 +258,7 @@ class BackupResource extends Resource ]) ->toolbarActions([ CreateAction::make() - ->authorize(fn () => auth()->user()->can(Permission::ACTION_BACKUP_CREATE, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_BACKUP_CREATE, $server)) ->icon('tabler-file-zip') ->tooltip(fn () => $server->backups()->count() >= $server->backup_limit ? trans('server/backup.actions.create.limit') : trans('server/backup.actions.create.title')) ->disabled(fn () => $server->backups()->count() >= $server->backup_limit) @@ -268,7 +268,7 @@ class BackupResource extends Resource ->action(function (InitiateBackupService $initiateBackupService, $data) use ($server) { $action = $initiateBackupService->setIgnoredFiles(explode(PHP_EOL, $data['ignored'] ?? '')); - if (auth()->user()->can(Permission::ACTION_BACKUP_DELETE, $server)) { + if (user()?->can(Permission::ACTION_BACKUP_DELETE, $server)) { $action->setIsLocked((bool) $data['is_locked']); } @@ -298,17 +298,17 @@ class BackupResource extends Resource public static function canViewAny(): bool { - return auth()->user()->can(Permission::ACTION_BACKUP_READ, Filament::getTenant()); + return user()?->can(Permission::ACTION_BACKUP_READ, Filament::getTenant()); } public static function canCreate(): bool { - return auth()->user()->can(Permission::ACTION_BACKUP_CREATE, Filament::getTenant()); + return user()?->can(Permission::ACTION_BACKUP_CREATE, Filament::getTenant()); } public static function canDelete(Model $record): bool { - return auth()->user()->can(Permission::ACTION_BACKUP_DELETE, Filament::getTenant()); + return user()?->can(Permission::ACTION_BACKUP_DELETE, Filament::getTenant()); } /** @return array */ diff --git a/app/Filament/Server/Resources/Databases/DatabaseResource.php b/app/Filament/Server/Resources/Databases/DatabaseResource.php index df3be7bce..b87efd9a5 100644 --- a/app/Filament/Server/Resources/Databases/DatabaseResource.php +++ b/app/Filament/Server/Resources/Databases/DatabaseResource.php @@ -88,10 +88,10 @@ class DatabaseResource extends Resource TextInput::make('password') ->label(trans('server/database.password')) ->password()->revealable() - ->hidden(fn () => !auth()->user()->can(Permission::ACTION_DATABASE_VIEW_PASSWORD, $server)) + ->hidden(fn () => !user()?->can(Permission::ACTION_DATABASE_VIEW_PASSWORD, $server)) ->hintAction( RotateDatabasePasswordAction::make() - ->authorize(fn () => auth()->user()->can(Permission::ACTION_DATABASE_UPDATE, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_DATABASE_UPDATE, $server)) ) ->copyable() ->formatStateUsing(fn (Database $database) => $database->password), @@ -103,7 +103,7 @@ class DatabaseResource extends Resource TextInput::make('jdbc') ->label(trans('server/database.jdbc')) ->password()->revealable() - ->hidden(!auth()->user()->can(Permission::ACTION_DATABASE_VIEW_PASSWORD, $server)) + ->hidden(!user()?->can(Permission::ACTION_DATABASE_VIEW_PASSWORD, $server)) ->copyable() ->columnSpanFull() ->formatStateUsing(fn (Database $database) => $database->jdbc), @@ -210,27 +210,27 @@ class DatabaseResource extends Resource public static function canViewAny(): bool { - return auth()->user()->can(Permission::ACTION_DATABASE_READ, Filament::getTenant()); + return user()?->can(Permission::ACTION_DATABASE_READ, Filament::getTenant()); } public static function canView(Model $record): bool { - return auth()->user()->can(Permission::ACTION_DATABASE_READ, Filament::getTenant()); + return user()?->can(Permission::ACTION_DATABASE_READ, Filament::getTenant()); } public static function canCreate(): bool { - return auth()->user()->can(Permission::ACTION_DATABASE_CREATE, Filament::getTenant()); + return user()?->can(Permission::ACTION_DATABASE_CREATE, Filament::getTenant()); } public static function canEdit(Model $record): bool { - return auth()->user()->can(Permission::ACTION_DATABASE_UPDATE, Filament::getTenant()); + return user()?->can(Permission::ACTION_DATABASE_UPDATE, Filament::getTenant()); } public static function canDelete(Model $record): bool { - return auth()->user()->can(Permission::ACTION_DATABASE_DELETE, Filament::getTenant()); + return user()?->can(Permission::ACTION_DATABASE_DELETE, Filament::getTenant()); } /** @return array */ diff --git a/app/Filament/Server/Resources/Files/FileResource.php b/app/Filament/Server/Resources/Files/FileResource.php index 4f61a6766..281758113 100644 --- a/app/Filament/Server/Resources/Files/FileResource.php +++ b/app/Filament/Server/Resources/Files/FileResource.php @@ -32,22 +32,22 @@ class FileResource extends Resource public static function canViewAny(): bool { - return auth()->user()->can(Permission::ACTION_FILE_READ, Filament::getTenant()); + return user()?->can(Permission::ACTION_FILE_READ, Filament::getTenant()); } public static function canCreate(): bool { - return auth()->user()->can(Permission::ACTION_FILE_CREATE, Filament::getTenant()); + return user()?->can(Permission::ACTION_FILE_CREATE, Filament::getTenant()); } public static function canEdit(Model $record): bool { - return auth()->user()->can(Permission::ACTION_FILE_UPDATE, Filament::getTenant()); + return user()?->can(Permission::ACTION_FILE_UPDATE, Filament::getTenant()); } public static function canDelete(Model $record): bool { - return auth()->user()->can(Permission::ACTION_FILE_DELETE, Filament::getTenant()); + return user()?->can(Permission::ACTION_FILE_DELETE, Filament::getTenant()); } /** @return array */ diff --git a/app/Filament/Server/Resources/Files/Pages/DownloadFiles.php b/app/Filament/Server/Resources/Files/Pages/DownloadFiles.php index 7a9b93bd0..7402c8069 100644 --- a/app/Filament/Server/Resources/Files/Pages/DownloadFiles.php +++ b/app/Filament/Server/Resources/Files/Pages/DownloadFiles.php @@ -39,12 +39,12 @@ class DownloadFiles extends Page $token = $this->nodeJWTService ->setExpiresAt(CarbonImmutable::now()->addMinutes(15)) - ->setUser(auth()->user()) + ->setUser(user()) ->setClaims([ 'file_path' => rawurldecode($path), 'server_uuid' => $server->uuid, ]) - ->handle($server->node, auth()->user()->id . $server->uuid); + ->handle($server->node, user()?->id . $server->uuid); Activity::event('server:file.download') ->property('file', $path) @@ -55,7 +55,7 @@ class DownloadFiles extends Page protected function authorizeAccess(): void { - abort_unless(auth()->user()->can(Permission::ACTION_FILE_READ_CONTENT, Filament::getTenant()), 403); + abort_unless(user()?->can(Permission::ACTION_FILE_READ_CONTENT, Filament::getTenant()), 403); } public static function route(string $path): PageRegistration diff --git a/app/Filament/Server/Resources/Files/Pages/EditFiles.php b/app/Filament/Server/Resources/Files/Pages/EditFiles.php index d5835338c..dd13e10b3 100644 --- a/app/Filament/Server/Resources/Files/Pages/EditFiles.php +++ b/app/Filament/Server/Resources/Files/Pages/EditFiles.php @@ -81,7 +81,7 @@ class EditFiles extends Page ->footerActions([ Action::make('save_and_close') ->label(trans('server/file.actions.edit.save_close')) - ->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_UPDATE, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_FILE_UPDATE, $server)) ->icon('tabler-device-floppy') ->keyBindings('mod+shift+s') ->action(function () { @@ -101,7 +101,7 @@ class EditFiles extends Page }), Action::make('save') ->label(trans('server/file.actions.edit.save')) - ->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_UPDATE, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_FILE_UPDATE, $server)) ->icon('tabler-device-floppy') ->keyBindings('mod+s') ->action(function () { @@ -227,7 +227,7 @@ class EditFiles extends Page protected function authorizeAccess(): void { - abort_unless(auth()->user()->can(Permission::ACTION_FILE_READ_CONTENT, Filament::getTenant()), 403); + abort_unless(user()?->can(Permission::ACTION_FILE_READ_CONTENT, Filament::getTenant()), 403); } /** diff --git a/app/Filament/Server/Resources/Files/Pages/ListFiles.php b/app/Filament/Server/Resources/Files/Pages/ListFiles.php index 4b7801141..3d1460be7 100644 --- a/app/Filament/Server/Resources/Files/Pages/ListFiles.php +++ b/app/Filament/Server/Resources/Files/Pages/ListFiles.php @@ -119,7 +119,7 @@ class ListFiles extends ListRecords return self::getUrl(['path' => encode_path(join_paths($this->path, $file->name))]); } - if (!auth()->user()->can(Permission::ACTION_FILE_READ_CONTENT, $server)) { + if (!user()?->can(Permission::ACTION_FILE_READ_CONTENT, $server)) { return null; } @@ -127,19 +127,19 @@ class ListFiles extends ListRecords }) ->recordActions([ Action::make('view') - ->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_READ, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_FILE_READ, $server)) ->label(trans('server/file.actions.open')) ->icon('tabler-eye')->iconSize(IconSize::Large) ->visible(fn (File $file) => $file->is_directory) ->url(fn (File $file) => self::getUrl(['path' => encode_path(join_paths($this->path, $file->name))])), EditAction::make('edit') - ->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_READ_CONTENT, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_FILE_READ_CONTENT, $server)) ->icon('tabler-edit') ->visible(fn (File $file) => $file->canEdit()) ->url(fn (File $file) => EditFiles::getUrl(['path' => encode_path(join_paths($this->path, $file->name))])), ActionGroup::make([ Action::make('rename') - ->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_UPDATE, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_FILE_UPDATE, $server)) ->label(trans('server/file.actions.rename.title')) ->icon('tabler-forms')->iconSize(IconSize::Large) ->schema([ @@ -169,7 +169,7 @@ class ListFiles extends ListRecords $this->refreshPage(); }), Action::make('copy') - ->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_CREATE, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_FILE_CREATE, $server)) ->label(trans('server/file.actions.copy.title')) ->icon('tabler-copy')->iconSize(IconSize::Large) ->visible(fn (File $file) => $file->is_file) @@ -188,13 +188,13 @@ class ListFiles extends ListRecords $this->refreshPage(); }), Action::make('download') - ->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_READ_CONTENT, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_FILE_READ_CONTENT, $server)) ->label(trans('server/file.actions.download')) ->icon('tabler-download')->iconSize(IconSize::Large) ->visible(fn (File $file) => $file->is_file) ->url(fn (File $file) => DownloadFiles::getUrl(['path' => encode_path(join_paths($this->path, $file->name))]), true), Action::make('move') - ->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_UPDATE, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_FILE_UPDATE, $server)) ->label(trans('server/file.actions.move.title')) ->icon('tabler-replace')->iconSize(IconSize::Large) ->schema([ @@ -231,7 +231,7 @@ class ListFiles extends ListRecords $this->refreshPage(); }), Action::make('permissions') - ->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_UPDATE, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_FILE_UPDATE, $server)) ->label(trans('server/file.actions.permissions.title')) ->icon('tabler-license')->iconSize(IconSize::Large) ->schema([ @@ -293,7 +293,7 @@ class ListFiles extends ListRecords ->send(); }), Action::make('archive') - ->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_ARCHIVE, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_FILE_ARCHIVE, $server)) ->label(trans('server/file.actions.archive.title')) ->icon('tabler-archive')->iconSize(IconSize::Large) ->schema([ @@ -320,7 +320,7 @@ class ListFiles extends ListRecords $this->refreshPage(); }), Action::make('unarchive') - ->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_ARCHIVE, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_FILE_ARCHIVE, $server)) ->label(trans('server/file.actions.unarchive.title')) ->icon('tabler-archive')->iconSize(IconSize::Large) ->visible(fn (File $file) => $file->isArchive()) @@ -341,7 +341,7 @@ class ListFiles extends ListRecords }), ])->iconSize(IconSize::Large), DeleteAction::make() - ->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_DELETE, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_FILE_DELETE, $server)) ->hiddenLabel() ->icon('tabler-trash')->iconSize(IconSize::Large) ->requiresConfirmation() @@ -361,7 +361,7 @@ class ListFiles extends ListRecords ->toolbarActions([ BulkActionGroup::make([ BulkAction::make('move') - ->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_UPDATE, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_FILE_UPDATE, $server)) ->schema([ TextInput::make('location') ->label(trans('server/file.actions.move.directory')) @@ -390,7 +390,7 @@ class ListFiles extends ListRecords $this->refreshPage(); }), BulkAction::make('archive') - ->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_ARCHIVE, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_FILE_ARCHIVE, $server)) ->schema([ TextInput::make('name') ->label(trans('server/file.actions.archive.archive_name')) @@ -417,7 +417,7 @@ class ListFiles extends ListRecords $this->refreshPage(); }), DeleteBulkAction::make() - ->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_DELETE, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_FILE_DELETE, $server)) ->action(function (Collection $files) { $files = $files->map(fn ($file) => $file['name'])->toArray(); $this->getDaemonFileRepository()->deleteFiles($this->path, $files); @@ -437,7 +437,7 @@ class ListFiles extends ListRecords ]), Action::make('new_file') - ->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_CREATE, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_FILE_CREATE, $server)) ->tooltip(trans('server/file.actions.new_file.title')) ->hiddenLabel()->icon('tabler-file-plus')->iconButton()->iconSize(IconSize::ExtraLarge) ->color('primary') @@ -470,7 +470,7 @@ class ListFiles extends ListRecords ->hiddenLabel(), ]), Action::make('new_folder') - ->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_CREATE, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_FILE_CREATE, $server)) ->hiddenLabel()->icon('tabler-folder-plus')->iconButton()->iconSize(IconSize::ExtraLarge) ->tooltip(trans('server/file.actions.new_folder.title')) ->color('primary') @@ -501,7 +501,7 @@ class ListFiles extends ListRecords ->required(), ]), Action::make('upload') - ->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_CREATE, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_FILE_CREATE, $server)) ->hiddenLabel()->icon('tabler-upload')->iconButton()->iconSize(IconSize::ExtraLarge) ->tooltip(trans('server/file.actions.upload.title')) ->color('success') @@ -554,7 +554,7 @@ class ListFiles extends ListRecords ]), ]), Action::make('search') - ->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_READ, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_FILE_READ, $server)) ->hiddenLabel()->iconButton()->iconSize(IconSize::ExtraLarge) ->tooltip(trans('server/file.actions.global_search.title')) ->color('primary') diff --git a/app/Filament/Server/Resources/Schedules/Pages/ViewSchedule.php b/app/Filament/Server/Resources/Schedules/Pages/ViewSchedule.php index 255655ba8..1ceeaf040 100644 --- a/app/Filament/Server/Resources/Schedules/Pages/ViewSchedule.php +++ b/app/Filament/Server/Resources/Schedules/Pages/ViewSchedule.php @@ -29,7 +29,7 @@ class ViewSchedule extends ViewRecord { return [ Action::make('run_now') - ->authorize(fn () => auth()->user()->can(Permission::ACTION_SCHEDULE_UPDATE, Filament::getTenant())) + ->authorize(fn () => user()?->can(Permission::ACTION_SCHEDULE_UPDATE, Filament::getTenant())) ->label(fn (Schedule $schedule) => $schedule->tasks->count() === 0 ? trans('server/schedule.no_tasks') : ($schedule->status === ScheduleStatus::Processing ? ScheduleStatus::Processing->getLabel() : trans('server/schedule.run_now'))) ->color(fn (Schedule $schedule) => $schedule->tasks->count() === 0 || $schedule->status === ScheduleStatus::Processing ? 'warning' : 'primary') ->disabled(fn (Schedule $schedule) => $schedule->tasks->count() === 0 || $schedule->status === ScheduleStatus::Processing) diff --git a/app/Filament/Server/Resources/Schedules/ScheduleResource.php b/app/Filament/Server/Resources/Schedules/ScheduleResource.php index 3362f1a17..ccb949705 100644 --- a/app/Filament/Server/Resources/Schedules/ScheduleResource.php +++ b/app/Filament/Server/Resources/Schedules/ScheduleResource.php @@ -66,22 +66,22 @@ class ScheduleResource extends Resource public static function canViewAny(): bool { - return auth()->user()->can(Permission::ACTION_SCHEDULE_READ, Filament::getTenant()); + return user()?->can(Permission::ACTION_SCHEDULE_READ, Filament::getTenant()); } public static function canCreate(): bool { - return auth()->user()->can(Permission::ACTION_SCHEDULE_CREATE, Filament::getTenant()); + return user()?->can(Permission::ACTION_SCHEDULE_CREATE, Filament::getTenant()); } public static function canEdit(Model $record): bool { - return auth()->user()->can(Permission::ACTION_SCHEDULE_UPDATE, Filament::getTenant()); + return user()?->can(Permission::ACTION_SCHEDULE_UPDATE, Filament::getTenant()); } public static function canDelete(Model $record): bool { - return auth()->user()->can(Permission::ACTION_SCHEDULE_DELETE, Filament::getTenant()); + return user()?->can(Permission::ACTION_SCHEDULE_DELETE, Filament::getTenant()); } /** @@ -123,12 +123,12 @@ class ScheduleResource extends Resource ->label(trans('server/schedule.cron')) ->description(function (Get $get) { try { - $nextRun = Utilities::getScheduleNextRunDate($get('cron_minute'), $get('cron_hour'), $get('cron_day_of_month'), $get('cron_month'), $get('cron_day_of_week'))->timezone(auth()->user()->timezone); + $nextRun = Utilities::getScheduleNextRunDate($get('cron_minute'), $get('cron_hour'), $get('cron_day_of_month'), $get('cron_month'), $get('cron_day_of_week'))->timezone(user()->timezone ?? 'UTC'); } catch (Exception) { $nextRun = trans('server/schedule.invalid'); } - return new HtmlString(trans('server/schedule.cron_body') . '
' . trans('server/schedule.cron_timezone', ['timezone' => auth()->user()->timezone, 'next_run' => $nextRun])); + return new HtmlString(trans('server/schedule.cron_body') . '
' . trans('server/schedule.cron_timezone', ['timezone' => user()->timezone ?? 'UTC', 'next_run' => $nextRun])); }) ->schema([ Actions::make([ diff --git a/app/Filament/Server/Resources/Users/UserResource.php b/app/Filament/Server/Resources/Users/UserResource.php index 069181357..4b5d98ff6 100644 --- a/app/Filament/Server/Resources/Users/UserResource.php +++ b/app/Filament/Server/Resources/Users/UserResource.php @@ -65,22 +65,22 @@ class UserResource extends Resource public static function canViewAny(): bool { - return auth()->user()->can(Permission::ACTION_USER_READ, Filament::getTenant()); + return user()?->can(Permission::ACTION_USER_READ, Filament::getTenant()); } public static function canCreate(): bool { - return auth()->user()->can(Permission::ACTION_USER_CREATE, Filament::getTenant()); + return user()?->can(Permission::ACTION_USER_CREATE, Filament::getTenant()); } public static function canEdit(Model $record): bool { - return auth()->user()->can(Permission::ACTION_USER_UPDATE, Filament::getTenant()); + return user()?->can(Permission::ACTION_USER_UPDATE, Filament::getTenant()); } public static function canDelete(Model $record): bool { - return auth()->user()->can(Permission::ACTION_USER_DELETE, Filament::getTenant()); + return user()?->can(Permission::ACTION_USER_DELETE, Filament::getTenant()); } public static function defaultTable(Table $table): Table @@ -139,7 +139,7 @@ class UserResource extends Resource ->recordActions([ DeleteAction::make() ->label(trans('server/user.delete')) - ->hidden(fn (User $user) => auth()->user()->id === $user->id) + ->hidden(fn (User $user) => user()?->id === $user->id) ->action(function (User $user, SubuserDeletionService $subuserDeletionService) use ($server) { $subuser = $server->subusers->where('user_id', $user->id)->first(); $subuserDeletionService->handle($subuser, $server); @@ -151,8 +151,8 @@ class UserResource extends Resource }), EditAction::make() ->label(trans('server/user.edit')) - ->hidden(fn (User $user) => auth()->user()->id === $user->id) - ->authorize(fn () => auth()->user()->can(Permission::ACTION_USER_UPDATE, $server)) + ->hidden(fn (User $user) => user()?->id === $user->id) + ->authorize(fn () => user()?->can(Permission::ACTION_USER_UPDATE, $server)) ->modalHeading(fn (User $user) => trans('server/user.editing', ['user' => $user->email])) ->action(function (array $data, SubuserUpdateService $subuserUpdateService, User $user) use ($server) { $subuser = $server->subusers->where('user_id', $user->id)->first(); @@ -237,7 +237,7 @@ class UserResource extends Resource ->icon('tabler-user-plus') ->tooltip(trans('server/user.invite_user')) ->createAnother(false) - ->authorize(fn () => auth()->user()->can(Permission::ACTION_USER_CREATE, $server)) + ->authorize(fn () => user()?->can(Permission::ACTION_USER_CREATE, $server)) ->schema([ Grid::make() ->columnSpanFull() diff --git a/app/Filament/Server/Widgets/ServerCpuChart.php b/app/Filament/Server/Widgets/ServerCpuChart.php index 7d90f06e4..8b0f0c36b 100644 --- a/app/Filament/Server/Widgets/ServerCpuChart.php +++ b/app/Filament/Server/Widgets/ServerCpuChart.php @@ -27,12 +27,12 @@ class ServerCpuChart extends ChartWidget protected function getData(): array { - $period = (int) auth()->user()->getCustomization(CustomizationKey::ConsoleGraphPeriod); + $period = (int) user()?->getCustomization(CustomizationKey::ConsoleGraphPeriod); $cpu = collect(cache()->get("servers.{$this->server->id}.cpu_absolute")) ->slice(-$period) ->map(fn ($value, $key) => [ 'cpu' => round($value, 2), - 'timestamp' => Carbon::createFromTimestamp($key, auth()->user()->timezone ?? 'UTC')->format('H:i:s'), + 'timestamp' => Carbon::createFromTimestamp($key, user()->timezone ?? 'UTC')->format('H:i:s'), ]) ->all(); @@ -48,7 +48,7 @@ class ServerCpuChart extends ChartWidget ], ], 'labels' => array_column($cpu, 'timestamp'), - 'locale' => auth()->user()->language ?? 'en', + 'locale' => user()->language ?? 'en', ]; } diff --git a/app/Filament/Server/Widgets/ServerMemoryChart.php b/app/Filament/Server/Widgets/ServerMemoryChart.php index b53f0f303..5fb787e9a 100644 --- a/app/Filament/Server/Widgets/ServerMemoryChart.php +++ b/app/Filament/Server/Widgets/ServerMemoryChart.php @@ -27,12 +27,12 @@ class ServerMemoryChart extends ChartWidget protected function getData(): array { - $period = (int) auth()->user()->getCustomization(CustomizationKey::ConsoleGraphPeriod); + $period = (int) user()?->getCustomization(CustomizationKey::ConsoleGraphPeriod); $memUsed = collect(cache()->get("servers.{$this->server->id}.memory_bytes")) ->slice(-$period) ->map(fn ($value, $key) => [ 'memory' => round(config('panel.use_binary_prefix') ? $value / 1024 / 1024 / 1024 : $value / 1000 / 1000 / 1000, 2), - 'timestamp' => Carbon::createFromTimestamp($key, auth()->user()->timezone ?? 'UTC')->format('H:i:s'), + 'timestamp' => Carbon::createFromTimestamp($key, user()->timezone ?? 'UTC')->format('H:i:s'), ]) ->all(); @@ -48,7 +48,7 @@ class ServerMemoryChart extends ChartWidget ], ], 'labels' => array_column($memUsed, 'timestamp'), - 'locale' => auth()->user()->language ?? 'en', + 'locale' => user()->language ?? 'en', ]; } diff --git a/app/Filament/Server/Widgets/ServerNetworkChart.php b/app/Filament/Server/Widgets/ServerNetworkChart.php index c80b89592..10d0cc632 100644 --- a/app/Filament/Server/Widgets/ServerNetworkChart.php +++ b/app/Filament/Server/Widgets/ServerNetworkChart.php @@ -29,7 +29,7 @@ class ServerNetworkChart extends ChartWidget { $previous = null; - $period = (int) auth()->user()->getCustomization(CustomizationKey::ConsoleGraphPeriod); + $period = (int) user()?->getCustomization(CustomizationKey::ConsoleGraphPeriod); $net = collect(cache()->get("servers.{$this->server->id}.network")) ->slice(-$period) ->map(function ($current, $timestamp) use (&$previous) { @@ -39,7 +39,7 @@ class ServerNetworkChart extends ChartWidget $net = [ 'rx' => max(0, $current->rx_bytes - $previous->rx_bytes), 'tx' => max(0, $current->tx_bytes - $previous->tx_bytes), - 'timestamp' => Carbon::createFromTimestamp($timestamp, auth()->user()->timezone ?? 'UTC')->format('H:i:s'), + 'timestamp' => Carbon::createFromTimestamp($timestamp, user()->timezone ?? 'UTC')->format('H:i:s'), ]; } diff --git a/app/Providers/Filament/AppPanelProvider.php b/app/Providers/Filament/AppPanelProvider.php index 8f4d56dd0..b37e65619 100644 --- a/app/Providers/Filament/AppPanelProvider.php +++ b/app/Providers/Filament/AppPanelProvider.php @@ -20,7 +20,7 @@ class AppPanelProvider extends PanelProvider ->label(trans('profile.admin')) ->url(fn () => Filament::getPanel('admin')->getUrl()) ->icon('tabler-arrow-forward') - ->visible(fn () => auth()->user()->canAccessPanel(Filament::getPanel('admin'))), + ->visible(fn () => user()?->canAccessPanel(Filament::getPanel('admin'))), ]) ->discoverResources(in: app_path('Filament/App/Resources'), for: 'App\\Filament\\App\\Resources'); } diff --git a/app/Providers/Filament/PanelProvider.php b/app/Providers/Filament/PanelProvider.php index 6b9a8b60c..ba31f5935 100644 --- a/app/Providers/Filament/PanelProvider.php +++ b/app/Providers/Filament/PanelProvider.php @@ -34,7 +34,7 @@ abstract class PanelProvider extends BasePanelProvider ->brandLogo(config('app.logo')) ->brandLogoHeight('2rem') ->favicon(config('app.favicon', '/pelican.ico')) - ->topNavigation(fn () => auth()->user()->getCustomization(CustomizationKey::TopNavigation)) + ->topNavigation(fn () => user()?->getCustomization(CustomizationKey::TopNavigation)) ->maxContentWidth(config('panel.filament.display-width', 'screen-2xl')) ->profile(EditProfile::class, false) ->userMenuItems([ @@ -48,8 +48,7 @@ abstract class PanelProvider extends BasePanelProvider EmailAuthentication::make(), ]) ->requiresMultiFactorAuthentication(function () { - /** @var ?User $user */ - $user = auth()->user(); // TODO: get user, see https://github.com/filamentphp/filament/discussions/17695 + $user = user(); // TODO: get user, see https://github.com/filamentphp/filament/discussions/17695 if ($user) { $level = (int) config('panel.auth.2fa_required'); diff --git a/app/Providers/Filament/ServerPanelProvider.php b/app/Providers/Filament/ServerPanelProvider.php index 67d285fcf..25221e89c 100644 --- a/app/Providers/Filament/ServerPanelProvider.php +++ b/app/Providers/Filament/ServerPanelProvider.php @@ -29,12 +29,12 @@ class ServerPanelProvider extends PanelProvider ->label(trans('profile.admin')) ->icon('tabler-arrow-forward') ->url(fn () => Filament::getPanel('admin')->getUrl()) - ->visible(fn () => auth()->user()->canAccessPanel(Filament::getPanel('admin'))), + ->visible(fn () => user()?->canAccessPanel(Filament::getPanel('admin'))), ]) ->navigationItems([ NavigationItem::make(trans('server/console.open_in_admin')) ->url(fn () => EditServer::getUrl(['record' => Filament::getTenant()], panel: 'admin')) - ->visible(fn () => auth()->user()->canAccessPanel(Filament::getPanel('admin')) && auth()->user()->can('view server', Filament::getTenant())) + ->visible(fn () => user()?->canAccessPanel(Filament::getPanel('admin')) && user()->can('view server', Filament::getTenant())) ->icon('tabler-arrow-back') ->sort(99), ]) diff --git a/app/Services/Subusers/SubuserCreationService.php b/app/Services/Subusers/SubuserCreationService.php index c3189a40d..81c41a7d8 100644 --- a/app/Services/Subusers/SubuserCreationService.php +++ b/app/Services/Subusers/SubuserCreationService.php @@ -58,7 +58,7 @@ class SubuserCreationService $cleanedPermissions = collect($permissions) ->unique() - ->filter(fn ($permission) => $permission === Permission::ACTION_WEBSOCKET_CONNECT || auth()->user()->can($permission, $server)) + ->filter(fn ($permission) => $permission === Permission::ACTION_WEBSOCKET_CONNECT || user()?->can($permission, $server)) ->sort() ->values() ->all(); diff --git a/app/Services/Subusers/SubuserUpdateService.php b/app/Services/Subusers/SubuserUpdateService.php index a5a53d91e..9a8aa7961 100644 --- a/app/Services/Subusers/SubuserUpdateService.php +++ b/app/Services/Subusers/SubuserUpdateService.php @@ -22,7 +22,7 @@ class SubuserUpdateService { $cleanedPermissions = collect($permissions) ->unique() - ->filter(fn ($permission) => $permission === Permission::ACTION_WEBSOCKET_CONNECT || auth()->user()->can($permission, $server)) + ->filter(fn ($permission) => $permission === Permission::ACTION_WEBSOCKET_CONNECT || user()?->can($permission, $server)) ->sort() ->values() ->all(); diff --git a/app/helpers.php b/app/helpers.php index 241a116ac..9fa2ec051 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -108,7 +108,7 @@ if (!function_exists('format_number')) { function format_number(int|float $number, ?int $precision = null, ?int $maxPrecision = null): false|string { try { - return Number::format($number, $precision, $maxPrecision, auth()->user()->language ?? 'en'); + return Number::format($number, $precision, $maxPrecision, user()->language ?? 'en'); } catch (Throwable) { // User language is invalid, so default to english return Number::format($number, $precision, $maxPrecision, 'en'); @@ -122,3 +122,10 @@ if (!function_exists('encode_path')) { return implode('/', array_map('rawurlencode', explode('/', $path))); } } + +if (!function_exists('user')) { + function user(): ?App\Models\User + { + return auth(config('auth.defaults.guard', 'web'))->user(); + } +} diff --git a/resources/views/errors/500.blade.php b/resources/views/errors/500.blade.php index cbb68a08d..b3f749245 100644 --- a/resources/views/errors/500.blade.php +++ b/resources/views/errors/500.blade.php @@ -1,7 +1,7 @@ @props([ 'code' => '500', 'title' => 'Server Error', -'subtitle' => fn () => auth()->user()?->isRootAdmin() ? $exception->getMessage() : 'Something went wrong.', +'subtitle' => fn () => user()?->isRootAdmin() ? $exception->getMessage() : 'Something went wrong.', 'icon' => 'tabler-bug' ]) diff --git a/resources/views/filament/components/server-console.blade.php b/resources/views/filament/components/server-console.blade.php index ede21e698..c931b9f28 100644 --- a/resources/views/filament/components/server-console.blade.php +++ b/resources/views/filament/components/server-console.blade.php @@ -1,9 +1,9 @@ @assets @php - $userFont = (string) auth()->user()->getCustomization(\App\Enums\CustomizationKey::ConsoleFont); - $userFontSize = (int) auth()->user()->getCustomization(\App\Enums\CustomizationKey::ConsoleFontSize); - $userRows = (int) auth()->user()->getCustomization(\App\Enums\CustomizationKey::ConsoleRows); + $userFont = (string) user()?->getCustomization(\App\Enums\CustomizationKey::ConsoleFont); + $userFontSize = (int) user()?->getCustomization(\App\Enums\CustomizationKey::ConsoleFontSize); + $userRows = (int) user()?->getCustomization(\App\Enums\CustomizationKey::ConsoleRows); @endphp @if($userFont !== "monospace")