From ec18d91ee8d2556bb0ea2c415a4f68a436ac0aca Mon Sep 17 00:00:00 2001 From: Gerhard Jungwirth Date: Thu, 8 Aug 2013 14:26:08 +0200 Subject: [PATCH] move admin deletion to Utils::Contract::recursively_lock_contract and prohibit deletion of the currently used account --- lib/NGCP/Panel/Controller/Administrator.pm | 5 +++++ lib/NGCP/Panel/Controller/Reseller.pm | 4 ---- lib/NGCP/Panel/Utils/Contract.pm | 13 ++++++++----- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/lib/NGCP/Panel/Controller/Administrator.pm b/lib/NGCP/Panel/Controller/Administrator.pm index f8d34fedc7..3636f5b7ee 100644 --- a/lib/NGCP/Panel/Controller/Administrator.pm +++ b/lib/NGCP/Panel/Controller/Administrator.pm @@ -194,6 +194,11 @@ sub edit :Chained('base') :PathPart('edit') :Args(0) { sub delete :Chained('base') :PathPart('delete') :Args(0) { my ($self, $c) = @_; + + if($c->stash->{administrator}->id == $c->user->id) { + $c->flash(messages => [{type => 'error', text => 'Cannot delete myself'}]); + NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/administrator')); + } try { $c->stash->{administrator}->delete; $c->flash(messages => [{type => 'success', text => 'Administrator successfully deleted'}]); diff --git a/lib/NGCP/Panel/Controller/Reseller.pm b/lib/NGCP/Panel/Controller/Reseller.pm index ef74288b4b..62fc23ec58 100644 --- a/lib/NGCP/Panel/Controller/Reseller.pm +++ b/lib/NGCP/Panel/Controller/Reseller.pm @@ -289,10 +289,6 @@ sub _handle_reseller_status_change { ); if($reseller->status eq "terminated") { - #delete admins - for my $admin($reseller->admins->all) { - $admin->delete; - } #delete ncos_levels $reseller->ncos_levels->delete_all; #delete voip_number_block_resellers diff --git a/lib/NGCP/Panel/Utils/Contract.pm b/lib/NGCP/Panel/Utils/Contract.pm index c450fb7137..a72ebcc85b 100644 --- a/lib/NGCP/Panel/Utils/Contract.pm +++ b/lib/NGCP/Panel/Utils/Contract.pm @@ -89,17 +89,20 @@ sub recursively_lock_contract { }); for my $reseller($resellers->all) { - # remove domains in case of reseller termination if($status eq 'terminated') { + # remove domains in case of reseller termination for my $domain($reseller->domain_resellers->all) { $domain->domain->delete; $domain->delete; } - } - # remove admin logins in case of reseller termination - for my $admin($reseller->admins->all) { - $admin->delete; + # remove admin logins in case of reseller termination + for my $admin($reseller->admins->all) { + if($admin->id == $c->user->id) { + die "Cannot delete the currently used account"; + } + $admin->delete; + } } # fetch sub-contracts of this contract