authorize('viewAny', [DatabaseUser::class, $this->server]); } protected function getHeaderActions(): array { return [ Action::make('create') ->icon('heroicon-o-plus') ->modalWidth(MaxWidth::Large) ->authorize(fn () => auth()->user()?->can('create', [DatabaseUser::class, $this->server])) ->form([ TextInput::make('username') ->label('Username') ->rules(fn (callable $get) => CreateDatabaseUser::rules($this->server, $get())['username']), TextInput::make('password') ->label('Password') ->rules(fn (callable $get) => CreateDatabaseUser::rules($this->server, $get())['password']), Checkbox::make('remote') ->label('Remote') ->default(false) ->reactive(), TextInput::make('host') ->label('Host') ->rules(fn (callable $get) => CreateDatabase::rules($this->server, $get())['host']) ->hidden(fn (callable $get) => $get('remote') !== true), ]) ->modalSubmitActionLabel('Create') ->action(function (array $data) { try { app(CreateDatabaseUser::class)->create($this->server, $data); $this->dispatch('$refresh'); Notification::make() ->success() ->title('Database user created!') ->send(); } catch (Exception $e) { Notification::make() ->danger() ->title($e->getMessage()) ->send(); throw $e; } }), ]; } public function getWidgets(): array { return [ [Widgets\DatabaseUsersList::class, ['server' => $this->server]], ]; } }