From 467321e2f3aef7ea5e17deb48b0c225fbba113dd Mon Sep 17 00:00:00 2001 From: Flaviu Mates Date: Tue, 29 Oct 2019 18:14:36 +0200 Subject: [PATCH] TT#69360 - Fix 500 errors when issuing POST to HeaderRule(Actions|Conditions) * DBIx could not resolve the relation 'rwr_set' when post processing hal resource because, if not 'rwr_set_id', parameter is sent, the field is not set in the DB * Add error message when sending 'rwr_dp' param with no 'rwr_set_id' which was causing error as well Change-Id: I90c2d5314b9e8a5389cc606bb0be72533614f8d5 --- lib/NGCP/Panel/Role/API/HeaderRuleActions.pm | 7 ++++++- lib/NGCP/Panel/Role/API/HeaderRuleConditions.pm | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/NGCP/Panel/Role/API/HeaderRuleActions.pm b/lib/NGCP/Panel/Role/API/HeaderRuleActions.pm index 68d266382b..07f26a1ec0 100644 --- a/lib/NGCP/Panel/Role/API/HeaderRuleActions.pm +++ b/lib/NGCP/Panel/Role/API/HeaderRuleActions.pm @@ -51,7 +51,7 @@ sub hal_links { sub post_process_hal_resource { my ($self, $c, $item, $resource, $form) = @_; my $dp_id = delete $resource->{rwr_dp_id}; - if ($item->rwr_set) { + if ($item->rwr_set_id && $item->rwr_set) { my %rwr_set_cols = $item->rwr_set->get_inflated_columns; foreach my $dp_t (qw(callee_in callee_out caller_in caller_out)) { my $c_dp_id = $rwr_set_cols{$dp_t.'_dpid'} // next; @@ -73,6 +73,11 @@ sub check_resource { return; } + if (!defined $resource->{rwr_set_id} && (defined $resource->{rwr_dp} || defined $resource->{rwr_dp_id})) { + $self->error($c, HTTP_UNPROCESSABLE_ENTITY, "Missing 'rwr_set_id' (when rwr_dp is set)."); + return; + } + my $reseller_id; if ($c->user->roles eq "reseller") { $reseller_id = $c->user->reseller_id; diff --git a/lib/NGCP/Panel/Role/API/HeaderRuleConditions.pm b/lib/NGCP/Panel/Role/API/HeaderRuleConditions.pm index fd98b3ecad..1fb316da71 100644 --- a/lib/NGCP/Panel/Role/API/HeaderRuleConditions.pm +++ b/lib/NGCP/Panel/Role/API/HeaderRuleConditions.pm @@ -53,7 +53,7 @@ sub post_process_hal_resource { my ($self, $c, $item, $resource, $form) = @_; my $dp_id = delete $resource->{rwr_dp_id}; my @values = (); - if ($item->rwr_set) { + if ($item->rwr_set_id && $item->rwr_set) { my %rwr_set_cols = $item->rwr_set->get_inflated_columns; foreach my $dp_t (qw(callee_in callee_out caller_in caller_out)) { my $c_dp_id = $rwr_set_cols{$dp_t.'_dpid'} // next; @@ -93,6 +93,11 @@ sub check_resource { return; } + if (!defined $resource->{rwr_set_id} && (defined $resource->{rwr_dp} || defined $resource->{rwr_dp_id})) { + $self->error($c, HTTP_UNPROCESSABLE_ENTITY, "Missing 'rwr_set_id' (when rwr_dp is set)."); + return; + } + my $reseller_id; if ($c->user->roles eq "reseller") { $reseller_id = $c->user->reseller_id;