From 76f4bdd14ce797aebb30ba484c121b66d60a1964 Mon Sep 17 00:00:00 2001 From: Gerhard Jungwirth Date: Fri, 4 Oct 2013 11:03:19 +0200 Subject: [PATCH] Restrict certain domain-prefs to their respective reseller The preferences rewrite_rule_sets, ncos_levels, and sound_sets on a domain should be restricted to ones, that have the same reseller as the domain itself. In addition we have to make sure, the preference view does not die, if an invalid preference had already been selected, for example when the respective *set/*level had been deleted or had been one, with a wrong reseller, because of this bug, we just fixed. Mantis: 4127 --- lib/NGCP/Panel/Controller/Domain.pm | 10 ++++++--- lib/NGCP/Panel/Utils/Preferences.pm | 35 +++++++++++++++++------------ 2 files changed, 28 insertions(+), 17 deletions(-) diff --git a/lib/NGCP/Panel/Controller/Domain.pm b/lib/NGCP/Panel/Controller/Domain.pm index a5b76f372e..50c0f62daf 100644 --- a/lib/NGCP/Panel/Controller/Domain.pm +++ b/lib/NGCP/Panel/Controller/Domain.pm @@ -332,18 +332,22 @@ sub load_preference_list :Private { ]; } + my $correct_reseller_id = $c->stash->{domain_result}->domain_resellers->first->reseller_id; my $rewrite_rule_sets_rs = $c->model('DB') - ->resultset('voip_rewrite_rule_sets'); + ->resultset('voip_rewrite_rule_sets') + ->search_rs({ reseller_id => $correct_reseller_id, }); $c->stash(rwr_sets_rs => $rewrite_rule_sets_rs, rwr_sets => [$rewrite_rule_sets_rs->all]); my $ncos_levels_rs = $c->model('DB') - ->resultset('ncos_levels'); + ->resultset('ncos_levels') + ->search_rs({ reseller_id => $correct_reseller_id, }); $c->stash(ncos_levels_rs => $ncos_levels_rs, ncos_levels => [$ncos_levels_rs->all]); my $sound_sets_rs = $c->model('DB') - ->resultset('voip_sound_sets'); + ->resultset('voip_sound_sets') + ->search_rs({ reseller_id => $correct_reseller_id, }); $c->stash(sound_sets_rs => $sound_sets_rs, sound_sets => [$sound_sets_rs->all]); diff --git a/lib/NGCP/Panel/Utils/Preferences.pm b/lib/NGCP/Panel/Utils/Preferences.pm index 1d66d86a03..fe622f7a64 100644 --- a/lib/NGCP/Panel/Utils/Preferences.pm +++ b/lib/NGCP/Panel/Utils/Preferences.pm @@ -37,23 +37,28 @@ sub load_preference_list { foreach my $pref(@group_prefs) { if($pref->attribute eq "rewrite_rule_set") { - $pref->{rwrs_id} = $pref_values->{rewrite_caller_in_dpid} ? - $c->stash->{rwr_sets_rs}->search({ + my $tmp; + $pref->{rwrs_id} = $pref_values->{rewrite_caller_in_dpid} && + ($tmp = $c->stash->{rwr_sets_rs}->search({ caller_in_dpid =>$pref_values->{rewrite_caller_in_dpid} - })->first->id + })->first) ? + $tmp->id : undef; } elsif($pref->attribute eq "ncos") { - $pref->{ncos_id} = $pref_values->{ncos_id} ? - $c->stash->{ncos_levels_rs} - ->find($pref_values->{ncos_id})->id - : undef; + if ($pref_values->{ncos_id} && + (my $tmp = $c->stash->{ncos_levels_rs} + ->find($pref_values->{ncos_id}) )) { + $pref->{ncos_id} = $tmp->id; + } } elsif($pref->attribute eq "adm_ncos") { - $pref->{adm_ncos_id} = $pref_values->{adm_ncos_id} ? - $c->stash->{ncos_levels_rs} - ->find($pref_values->{adm_ncos_id})->id - : undef; + + if ($pref_values->{adm_ncos_id} && + (my $tmp = $c->stash->{ncos_levels_rs} + ->find($pref_values->{adm_ncos_id}) )) { + $pref->{adm_ncos_id} = $tmp->id; + } } elsif($pref->attribute eq "allowed_ips") { $pref->{allowed_ips_group_id} = $pref_values->{allowed_ips_grp}; @@ -108,10 +113,12 @@ sub create_preference_form { },{ join => 'attribute' })->first; - if (defined $rewrite_caller_in_dpid) { - $preselected_value = $c->stash->{rwr_sets_rs}->search({ + if (defined $rewrite_caller_in_dpid && ( + my $tmp = $preselected_value = $c->stash->{rwr_sets_rs}->search({ caller_in_dpid => $rewrite_caller_in_dpid->value, - })->first->id; + })->first + )) { + $preselected_value = $tmp->id; } } elsif ($c->stash->{preference_meta}->attribute eq "ncos") { my $ncos_id_preference = $pref_rs->search({