Enforce topology rules and fix device deletion flow
This commit is contained in:
@@ -42,6 +42,18 @@ $normalizePortType = static function (string $value): string {
|
||||
$portAType = $normalizePortType((string)$portAType);
|
||||
$portBType = $normalizePortType((string)$portBType);
|
||||
|
||||
$isTopologyPairAllowed = static function (string $typeA, string $typeB): bool {
|
||||
$allowed = ['device' => true, 'module' => true, 'outlet' => true, 'patchpanel' => true];
|
||||
if (!isset($allowed[$typeA]) || !isset($allowed[$typeB])) {
|
||||
return false;
|
||||
}
|
||||
if ($typeA === 'patchpanel' || $typeB === 'patchpanel') {
|
||||
return ($typeA === 'patchpanel' && in_array($typeB, ['patchpanel', 'outlet'], true))
|
||||
|| ($typeB === 'patchpanel' && in_array($typeA, ['patchpanel', 'outlet'], true));
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
// =========================
|
||||
// Validierung (einfach)
|
||||
// =========================
|
||||
@@ -50,6 +62,9 @@ $errors = [];
|
||||
if ($portAId <= 0 || $portBId <= 0) {
|
||||
$errors[] = "Beide Ports sind erforderlich";
|
||||
}
|
||||
if (!$isTopologyPairAllowed($portAType, $portBType)) {
|
||||
$errors[] = "Patchpanel-Ports duerfen nur mit Patchpanel-Ports oder Netzwerkdosen-Ports verbunden werden";
|
||||
}
|
||||
|
||||
$otherConnections = $sql->get(
|
||||
"SELECT id, port_a_type, port_a_id, port_b_type, port_b_id
|
||||
|
||||
Reference in New Issue
Block a user