From ddf0864d70eaff64c3b71ba0e7222778fe501a2b Mon Sep 17 00:00:00 2001 From: "Joseph.Rawlings" Date: Mon, 1 Dec 2025 14:31:44 -0500 Subject: [PATCH] feat: implement delete rule confirmation modal in Proxmox Firewall component to enhance user experience and prevent accidental deletions --- .../Servers/Proxmox/Livewire/Firewall.php | 22 +- .../Servers/Proxmox/views/firewall.blade.php | 350 +++++++++++------- 2 files changed, 228 insertions(+), 144 deletions(-) diff --git a/extensions/Servers/Proxmox/Livewire/Firewall.php b/extensions/Servers/Proxmox/Livewire/Firewall.php index 23eb9c38e..6de9683a0 100644 --- a/extensions/Servers/Proxmox/Livewire/Firewall.php +++ b/extensions/Servers/Proxmox/Livewire/Firewall.php @@ -410,9 +410,28 @@ class Firewall extends Component } } - public function deleteRule(int $pos): void + public function confirmDeleteRule(int $pos): void { + $this->deletingRulePos = $pos; + $this->showDeleteModal = true; + } + + public function cancelDeleteRule(): void + { + $this->deletingRulePos = null; + $this->showDeleteModal = false; + } + + public function deleteRule(): void + { + if ($this->deletingRulePos === null) { + return; + } + + $pos = $this->deletingRulePos; $this->loading = true; + $this->showDeleteModal = false; + try { $response = $this->firewallRequest( '/nodes/' . $this->server->node->name . '/qemu/' . $this->server->vm_id . '/firewall/rules/' . $pos, @@ -441,6 +460,7 @@ class Firewall extends Component $this->showErrorModal = true; } finally { $this->loading = false; + $this->deletingRulePos = null; } } diff --git a/extensions/Servers/Proxmox/views/firewall.blade.php b/extensions/Servers/Proxmox/views/firewall.blade.php index 323972d7c..ba37d089e 100644 --- a/extensions/Servers/Proxmox/views/firewall.blade.php +++ b/extensions/Servers/Proxmox/views/firewall.blade.php @@ -133,7 +133,7 @@

Enables or disables the firewall ability for this network adapter

- Firewall + Network Adapter Firewall
Disabled
- - @if($showRuleForm) -
-
-

{{ $editingRulePos !== null ? 'Edit Rule' : 'Create New Rule' }}

- -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- @endif - @if(count($rules) > 0)
@@ -380,8 +240,7 @@
@endif + + + @if($showRuleForm) +
+
+
+

{{ $editingRulePos !== null ? 'Edit Rule' : 'Create New Rule' }}

+ +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+
+
+ @endif + + + @if($showDeleteModal && $deletingRulePos !== null) + @php + $ruleToDelete = collect($rules)->firstWhere('pos', $deletingRulePos); + @endphp +
+
+
+
+ +
+
+

Delete Firewall Rule

+

+ Are you sure you want to delete this firewall rule? This action cannot be undone. +

+ @if($ruleToDelete) +
+
+
Action: {{ $ruleToDelete['action'] ?? '-' }}
+ @if(!empty($ruleToDelete['source'])) +
Source: {{ $ruleToDelete['source'] }}
+ @endif + @if(!empty($ruleToDelete['dest'])) +
Destination: {{ $ruleToDelete['dest'] }}
+ @endif + @if(!empty($ruleToDelete['proto'])) +
Protocol: {{ strtoupper($ruleToDelete['proto']) }}
+ @endif + @if(!empty($ruleToDelete['dport'])) +
Port: {{ $ruleToDelete['dport'] }}
+ @endif + @if(!empty($ruleToDelete['comment'])) +
Comment: {{ $ruleToDelete['comment'] }}
+ @endif +
+
+ @endif +
+
+
+ + +
+
+
+ @endif