diff --git a/app/Filament/Admin/Resources/NodeResource/Pages/CreateNode.php b/app/Filament/Admin/Resources/NodeResource/Pages/CreateNode.php index a5b7fcc72..302ac18cb 100644 --- a/app/Filament/Admin/Resources/NodeResource/Pages/CreateNode.php +++ b/app/Filament/Admin/Resources/NodeResource/Pages/CreateNode.php @@ -3,6 +3,7 @@ namespace App\Filament\Admin\Resources\NodeResource\Pages; use App\Filament\Admin\Resources\NodeResource; +use App\Models\Node; use Filament\Forms; use Filament\Forms\Components\Actions\Action; use Filament\Forms\Components\Grid; @@ -44,7 +45,8 @@ class CreateNode extends CreateRecord ->required() ->autofocus() ->live(debounce: 1500) - ->rule('prohibited', fn ($state) => is_ip($state) && request()->isSecure()) + ->rules(Node::getRulesForField('fqdn')) + ->prohibited(fn ($state) => is_ip($state) && request()->isSecure()) ->label(fn ($state) => is_ip($state) ? trans('admin/node.ip_address') : trans('admin/node.domain')) ->placeholder(fn ($state) => is_ip($state) ? '192.168.1.1' : 'node.example.com') ->helperText(function ($state) { diff --git a/app/Filament/Admin/Resources/NodeResource/Pages/EditNode.php b/app/Filament/Admin/Resources/NodeResource/Pages/EditNode.php index 98d7099b1..e05d14514 100644 --- a/app/Filament/Admin/Resources/NodeResource/Pages/EditNode.php +++ b/app/Filament/Admin/Resources/NodeResource/Pages/EditNode.php @@ -108,7 +108,8 @@ class EditNode extends EditRecord ->required() ->autofocus() ->live(debounce: 1500) - ->rule('prohibited', fn ($state) => is_ip($state) && request()->isSecure()) + ->rules(Node::getRulesForField('fqdn')) + ->prohibited(fn ($state) => is_ip($state) && request()->isSecure()) ->label(fn ($state) => is_ip($state) ? trans('admin/node.ip_address') : trans('admin/node.domain')) ->placeholder(fn ($state) => is_ip($state) ? '192.168.1.1' : 'node.example.com') ->helperText(function ($state) { diff --git a/app/Models/Node.php b/app/Models/Node.php index 0dd86b672..1b1cf68a5 100644 --- a/app/Models/Node.php +++ b/app/Models/Node.php @@ -89,7 +89,7 @@ class Node extends Model implements Validatable 'name' => ['required', 'string', 'min:1', 'max:100'], 'description' => ['string', 'nullable'], 'public' => ['boolean'], - 'fqdn' => ['required', 'string'], + 'fqdn' => ['required', 'string', 'notIn:0.0.0.0,127.0.0.1,localhost'], 'scheme' => ['required', 'string', 'in:http,https'], 'behind_proxy' => ['boolean'], 'memory' => ['required', 'numeric', 'min:0'],