user(); $vm = null; if (is_string($productId) && preg_match('/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i', $productId)) { $service = Service::with('vmware.ipAddress.host.datacenter.vCenter', 'vmware.vCenter') ->where('uuid', $productId) ->where('customer_id', $customer->id) ->first(); if ($service && $service->vmware) { $vm = $service->vmware; } } elseif (is_numeric($productId)) { $vm = ModuleVmware::with(['vCenter', 'ipAddress.host.datacenter.vCenter']) ->find((int) $productId); } else { $vm = ModuleVmware::with(['vCenter', 'ipAddress.host.datacenter.vCenter']) ->where('vmware_id', $productId) ->where('customer_id', $customer->id) ->first(); } if (!$vm) { return response()->json(['error' => true, 'message' => 'Không tìm thấy VM'], 404); } if ((int) $vm->customer_id !== (int) $customer->id) { return response()->json(['error' => true, 'message' => 'Bạn không có quyền thao tác VM này'], 403); } return $vm; } protected function getConsoleTicket(\App\Http\Services\vCenter $serviceVCenter, ModuleVmware $vm): array|JsonResponse { $vcenter = $vm->vCenter; if (!$vcenter) { return response()->json(['error' => true, 'message' => 'Không tìm thấy thông tin vCenter'], 404); } if (!$serviceVCenter->loginServer($vcenter)) { return response()->json(['error' => true, 'message' => 'Không thể đăng nhập vào vCenter']); } $consoleTicket = $serviceVCenter->GetConsoleTickets($vm->vmware_id); if ($consoleTicket === 'Login_Again') { if ($serviceVCenter->loginServer($vcenter)) { $consoleTicket = $serviceVCenter->GetConsoleTickets($vm->vmware_id); } else { return response()->json(['error' => true, 'message' => 'Không thể đăng nhập lại vào vCenter']); } } if (is_string($consoleTicket)) { return response()->json(['error' => true, 'message' => "Failed to get console ticket: $consoleTicket"]); } if ($consoleTicket['error']) { return response()->json(['error' => true, 'message' => $consoleTicket['data']]); } return $consoleTicket; } }