TT#158900 API DELETE admincerts/:id - master-admin for other admins

* Allow to delete admin cetificate of other admins
under master-admin.

Change-Id: I37ffaedce34b3a71d0a04556059059186a5b690d
mr11.0
Oleksandr Duts 4 years ago
parent eac6c2dc4c
commit a2dfbe8f36

@ -15,11 +15,18 @@ sub allowed_methods {
sub delete_item { sub delete_item {
my($self, $c, $item, $old_resource, $resource, $form) = @_; my($self, $c, $item, $old_resource, $resource, $form) = @_;
unless ($item->id == $c->user->id) {
$c->log->error("Administrator can only delete its own certificate."); if (
$self->error($c, HTTP_FORBIDDEN, "Administrator can only delete its own certificate."); $item->id != $c->user->id &&
(
!$c->user->is_master ||
!NGCP::Panel::Utils::UserRole::has_permission($c, $c->user->acl_role->id, $item->acl_role->id)
)
){
$self->error($c, HTTP_FORBIDDEN, 'Cannot delete certificate');
return; return;
} }
try { try {
$item->update({ $item->update({
ssl_client_m_serial => undef, ssl_client_m_serial => undef,
@ -30,6 +37,7 @@ sub delete_item {
$self->error($c, HTTP_INTERNAL_SERVER_ERROR, "Failed to delete administrator certificate."); $self->error($c, HTTP_INTERNAL_SERVER_ERROR, "Failed to delete administrator certificate.");
return; return;
} }
return 1; return 1;
} }

Loading…
Cancel
Save