schema([ Section::make()->schema([ Forms\Components\TextInput::make('username')->required()->maxLength(255), Forms\Components\TextInput::make('email')->email()->required()->maxLength(255), Forms\Components\TextInput::make('password') ->dehydrateStateUsing(fn (string $state): string => Hash::make($state)) ->dehydrated(fn (?string $state): bool => filled($state)) ->required(fn (string $operation): bool => $operation === 'create') ->password(), Forms\Components\ToggleButtons::make('root_admin') ->label('Administrator (Root)') ->options([ false => 'No', true => 'Admin', ]) ->colors([ false => 'primary', true => 'danger', ]) ->disableOptionWhen(function (string $operation, $value, User $user) { if ($operation !== 'edit' || $value) { return false; } return $user->isLastRootAdmin(); }) ->hint(fn (User $user) => $user->isLastRootAdmin() ? 'This is the last root administrator!' : '') ->helperText(fn (User $user) => $user->isLastRootAdmin() ? 'You must have at least one root administrator in your system.' : '') ->hintColor('warning') ->inline() ->required() ->default(false), Forms\Components\Hidden::make('skipValidation')->default(true), Forms\Components\Select::make('language') ->required() ->hidden() ->default('en') ->options(fn (User $user) => $user->getAvailableLanguages()), ])->columns(), ]); } protected function getHeaderActions(): array { return [ Actions\DeleteAction::make() ->label(fn (User $user) => auth()->user()->id === $user->id ? 'Can\'t Delete Yourself' : ($user->servers()->count() > 0 ? 'User Has Servers' : 'Delete')) ->disabled(fn (User $user) => auth()->user()->id === $user->id || $user->servers()->count() > 0), $this->getSaveFormAction()->formId('form'), ]; } protected function getFormActions(): array { return []; } public function exception($exception, $stopPropagation): void { (new FilamentExceptionHandler())->handle($exception, $stopPropagation); } }