You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ngcp-panel/lib/NGCP/Panel/Controller/API/AdminCertsItem.pm

46 lines
1014 B

package NGCP::Panel::Controller::API::AdminCertsItem;
use parent qw/NGCP::Panel::Role::EntitiesItem NGCP::Panel::Role::API::AdminCerts/;
use Sipwise::Base;
use HTTP::Status qw(:constants);
__PACKAGE__->set_config();
sub allowed_methods {
return [qw/GET OPTIONS HEAD DELETE/];
}
sub delete_item {
my($self, $c, $item, $old_resource, $resource, $form) = @_;
if (
$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;
}
try {
$item->update({
ssl_client_m_serial => undef,
ssl_client_certificate => undef,
});
} catch($e) {
$self->error($c, HTTP_INTERNAL_SERVER_ERROR, "Failed to delete administrator certificate.", $e);
return;
}
return 1;
}
1;
# vim: set tabstop=4 expandtab: