feat: implement drag-and-drop functionality for reordering firewall rules in Proxmox view
This commit is contained in:
@@ -481,6 +481,54 @@ class Firewall extends Component
|
||||
}
|
||||
}
|
||||
|
||||
public function reorderRules(int $fromPos, int $toPos): void
|
||||
{
|
||||
try {
|
||||
// Proxmox API uses PUT with moveto parameter to reorder rules
|
||||
$response = $this->firewallRequest(
|
||||
'/nodes/' . $this->server->node->name . '/qemu/' . $this->server->vm_id . '/firewall/rules/' . $fromPos,
|
||||
'put',
|
||||
['moveto' => $toPos]
|
||||
);
|
||||
|
||||
if ($response->successful()) {
|
||||
$this->notify('Rule reordered successfully', 'success');
|
||||
$this->loadFirewallRules();
|
||||
} else {
|
||||
$message = $response->json()['errors'][0]['message'] ?? 'Unknown error';
|
||||
$this->error = 'Failed to reorder rule: ' . $message;
|
||||
$this->showErrorModal = true;
|
||||
\Log::error('Failed to reorder firewall rule', [
|
||||
'from' => $fromPos,
|
||||
'to' => $toPos,
|
||||
'response' => $response->json()
|
||||
]);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
$errorMessage = $e->getMessage();
|
||||
if (method_exists($e, 'response') && $e->response()) {
|
||||
try {
|
||||
$errorData = $e->response()->json();
|
||||
if (isset($errorData['errors']) && is_array($errorData['errors']) && !empty($errorData['errors'])) {
|
||||
$errorMessage = $errorData['errors'][0]['message'] ?? $errorMessage;
|
||||
} elseif (isset($errorData['message'])) {
|
||||
$errorMessage = $errorData['message'];
|
||||
}
|
||||
} catch (\Exception $jsonError) {
|
||||
// Response might not be JSON
|
||||
}
|
||||
}
|
||||
$this->error = 'Failed to reorder rule: ' . $errorMessage;
|
||||
$this->showErrorModal = true;
|
||||
\Log::error('Exception reordering firewall rule', [
|
||||
'from' => $fromPos,
|
||||
'to' => $toPos,
|
||||
'error' => $e->getMessage(),
|
||||
'trace' => $e->getTraceAsString()
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
public function loadAliases(): void
|
||||
{
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user