mirror of
https://github.com/vitodeploy/vito.git
synced 2025-04-19 18:01:37 +00:00
83 lines
2.8 KiB
PHP
83 lines
2.8 KiB
PHP
<?php
|
|
|
|
namespace App\Web\Pages\Servers\Databases;
|
|
|
|
use App\Actions\Database\CreateDatabase;
|
|
use App\Actions\Database\CreateDatabaseUser;
|
|
use App\Models\DatabaseUser;
|
|
use App\Web\Contracts\HasSecondSubNav;
|
|
use App\Web\Pages\Servers\Page;
|
|
use Exception;
|
|
use Filament\Actions\Action;
|
|
use Filament\Forms\Components\Checkbox;
|
|
use Filament\Forms\Components\TextInput;
|
|
use Filament\Notifications\Notification;
|
|
use Filament\Support\Enums\MaxWidth;
|
|
|
|
class Users extends Page implements HasSecondSubNav
|
|
{
|
|
use Traits\Navigation;
|
|
|
|
protected static ?string $slug = 'servers/{server}/databases/users';
|
|
|
|
protected static ?string $title = 'Database Users';
|
|
|
|
public function mount(): void
|
|
{
|
|
$this->authorize('viewAny', [DatabaseUser::class, $this->server]);
|
|
}
|
|
|
|
protected function getHeaderActions(): array
|
|
{
|
|
return [
|
|
Action::make('Create User')
|
|
->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]],
|
|
];
|
|
}
|
|
}
|