loadMe(); $this->layout()->set("me", $me); $this->me = $me; if (!$this->me->isAdmin()) { $this->redirect("dashboard"); } } protected function indexAction(): void { $JSGlobals = [ "BASE_URL" => self::getUrl("IpNetwork"), "API_BASE_URL" => self::getUrl("IpNetwork"), "PAGE_TITLE" => "IPAM", "PATH" => [ ["text" => MFAPPNAME_SLUG, "href" => self::getUrl("Dashboard")], ["text" => "IPAM", "href" => self::getUrl("IpNetwork")] ], ]; $this->layout()->set("vueViewName", "IpNetwork"); $this->layout()->set("JSGlobals", $JSGlobals); $this->layout()->setTemplate("VueViews/Vue"); } protected function getAction() { $json = json_decode(file_get_contents('php://input'), true); $filters = $json['filters'] ?? []; $order = $json['order'] ?? ['key' => 'network_address', 'order' => 'asc']; $page = $json['pagination']['page'] ?? 1; $perPage = $json['pagination']['per_page'] ?? 50; $offset = ($page - 1) * $perPage; $networks = IpNetworkModel::getIpNetworks($filters, $perPage, $offset, $order); $total_rows = IpNetworkModel::countIpNetworks($filters); self::returnJson([ "rows" => $networks, "pagination" => [ "page" => $page, "total_pages" => ceil($total_rows / $perPage), "filtered_available" => intval($total_rows), "per_page" => $perPage, "total_rows" => intval($total_rows) ] ]); } protected function getByIdAction() { $id = $this->request->id; if (!$id) { self::sendError("Network ID is missing."); } $network = IpNetworkModel::getById($id); if ($network === null) { self::sendError("Network not found."); } self::returnJson(["success" => true, "network" => $network]); } protected function globalSearchAction() { $query = $this->request->q ?? ''; if (strlen($query) < 2) { self::returnJson([]); return; } $suggestions = IpNetworkModel::findSuggestions($query); self::returnJson($suggestions); } protected function findNetworkByStringAction() { $networkString = $this->request->network_string; if (!$networkString) { self::sendError("Network string is missing."); } $network = IpNetworkModel::findByNetworkString($networkString); if ($network === null) { self::sendError("Network not found."); } $navigateToId = null; if ($network->cidr < 31) { $navigateToId = $network->id; } else { $navigateToId = $network->parent_network_id; } self::returnJson(["success" => true, "navigateToId" => $navigateToId]); } protected function createAction() { $json = json_decode(file_get_contents('php://input'), true); try { IpNetworkModel::createIpNetwork($json); self::returnJson([ "success" => true, "message" => "IP-Netzwerk wurde erstellt." ]); } catch (Exception $e) { self::sendError($e->getMessage()); } } protected function updateAction() { $json = json_decode(file_get_contents('php://input'), true); if (empty($json['id'])) { self::sendError("Netzwerk-ID fehlt."); } try { IpNetworkModel::updateIpNetwork($json); self::returnJson([ "success" => true, "message" => "IP-Netzwerk wurde aktualisiert." ]); } catch (Exception $e) { self::sendError($e->getMessage()); } } protected function deleteAction() { $json = json_decode(file_get_contents('php://input'), true); if (empty($json['id'])) { self::sendError("Netzwerk-ID fehlt."); } try { IpNetworkModel::deleteIpNetwork($json['id']); self::returnJson([ "success" => true, "message" => "IP-Netzwerk wurde gelöscht." ]); } catch (Exception $e) { self::sendError($e->getMessage()); } } }