TT#60965 - Prohibit deletion of PBX Pilot Subscriber

when there are other subscribers

	 * Deleting the pilot subscriber and then editing
	   other subscribers would result in error, as
	   details from the pilot are needed
	 * Added code to makde the deletion of the PBX
	   pilot subscriber impossible if there are
	   other subscribers

Change-Id: I46da3e0e3726a8b9e3811fd879869988aa01adff
changes/80/33480/3
Flaviu Mates 6 years ago
parent 1d176e3925
commit 581f1386bd

@ -167,6 +167,21 @@ sub DELETE :Allow {
{ {
my $subscriber = $self->item_by_id($c, $id); my $subscriber = $self->item_by_id($c, $id);
last unless $self->resource_exists($c, subscriber => $subscriber); last unless $self->resource_exists($c, subscriber => $subscriber);
if ($subscriber->contract->product->class eq "pbxaccount" && $subscriber->provisioning_voip_subscriber->is_pbx_pilot) {
my $other_subscriber = $c->model('DB')->resultset('voip_subscribers')->search({
contract_id => $subscriber->contract->id,
status => { '!=' => 'terminated' },
'provisioning_voip_subscriber.is_pbx_pilot' => 0,
}, {
join => 'provisioning_voip_subscriber',
})->first();
if ($other_subscriber) {
$self->error($c, HTTP_FORBIDDEN, "Cannot terminate pilot subscriber when other subscribers exists");
return;
}
}
if($c->user->roles eq "subscriberadmin") { if($c->user->roles eq "subscriberadmin") {
my $prov_sub = $subscriber->provisioning_voip_subscriber; my $prov_sub = $subscriber->provisioning_voip_subscriber;

@ -370,6 +370,24 @@ sub terminate :Chained('base') :PathPart('terminate') :Args(0) :Does(ACL) :ACLDe
my ($self, $c) = @_; my ($self, $c) = @_;
my $subscriber = $c->stash->{subscriber}; my $subscriber = $c->stash->{subscriber};
if ($subscriber->contract->product->class eq "pbxaccount" && $c->stash->{subscriber}->provisioning_voip_subscriber->is_pbx_pilot) {
my $other_subscriber = $c->model('DB')->resultset('voip_subscribers')->search({
contract_id => $c->stash->{contract}->id,
status => { '!=' => 'terminated' },
'provisioning_voip_subscriber.is_pbx_pilot' => 0,
}, {
join => 'provisioning_voip_subscriber',
})->first();
if ($other_subscriber) {
NGCP::Panel::Utils::Message::error(
c => $c,
error => 'forbidden termination of pilot subscriber for uuid '.$c->qs($subscriber->uuid),
desc => $c->loc('Terminating pilot subscriber when other subscribers exist is prohibited.'),
);
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/subscriber'));
}
}
if($c->user->roles eq 'subscriberadmin' && $c->user->uuid eq $subscriber->uuid) { if($c->user->roles eq 'subscriberadmin' && $c->user->uuid eq $subscriber->uuid) {
NGCP::Panel::Utils::Message::error( NGCP::Panel::Utils::Message::error(
c => $c, c => $c,

Loading…
Cancel
Save