From 0582dc23173386ea0089b01bcb1490000a028fc2 Mon Sep 17 00:00:00 2001 From: Rene Krenn Date: Mon, 10 Feb 2020 10:27:33 +0100 Subject: [PATCH] TT#67108 peer rule unique check Change-Id: Ic76194a526e7a11ca3cc8db8d76de0883e1cf20b (cherry picked from commit b12b5d1d08dc62e5b9025e7069ab3c778066d8e2) --- lib/NGCP/Panel/Controller/Peering.pm | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/lib/NGCP/Panel/Controller/Peering.pm b/lib/NGCP/Panel/Controller/Peering.pm index fdbbae2b55..af4533b1ed 100644 --- a/lib/NGCP/Panel/Controller/Peering.pm +++ b/lib/NGCP/Panel/Controller/Peering.pm @@ -620,6 +620,15 @@ sub rules_create :Chained('rules_list') :PathPart('create') :Args(0) { if($posted && $form->validated) { try { $form->values->{callee_prefix} //= ''; + $form->values->{caller_pattern} //= ''; + $form->values->{callee_pattern} //= ''; + my $dup_item = $c->model('DB')->resultset('voip_peer_rules')->find({ + group_id => $c->stash->{group_result}->id, + callee_pattern => $form->values->{callee_pattern}, + caller_pattern => $form->values->{caller_pattern}, + callee_prefix => $form->values->{callee_prefix}, + }); + die("peering rule already exists") if $dup_item; $c->stash->{group_result}->voip_peer_rules->create($form->values); NGCP::Panel::Utils::Peering::_sip_lcr_reload(c => $c); NGCP::Panel::Utils::Message::info( @@ -694,7 +703,16 @@ sub rules_edit :Chained('rules_base') :PathPart('edit') :Args(0) { if($posted && $form->validated) { try { $form->values->{callee_prefix} //= ''; + $form->values->{caller_pattern} //= ''; + $form->values->{callee_pattern} //= ''; $form->values->{group_id} = $form->values->{group}{id}; + my $dup_item = $c->model('DB')->resultset('voip_peer_rules')->find({ + group_id => $form->values->{group_id}, + callee_pattern => $form->values->{callee_pattern}, + caller_pattern => $form->values->{caller_pattern}, + callee_prefix => $form->values->{callee_prefix}, + }); + die("peering rule already exists") if ($dup_item && $dup_item->id != $c->stash->{rule_result}->id); $c->stash->{rule_result}->update($form->values); NGCP::Panel::Utils::Peering::_sip_lcr_reload(c => $c); NGCP::Panel::Utils::Message::info(