|
|
|
|
@ -30,7 +30,7 @@ sub list_admin :PathPart('administrator') :Chained('/') :CaptureArgs(0) {
|
|
|
|
|
if($c->user->is_superuser) {
|
|
|
|
|
@{ $cols } = (@{ $cols }, { name => "reseller.name", search => 1, title => $c->loc("Reseller") });
|
|
|
|
|
}
|
|
|
|
|
@{ $cols } = (@{ $cols },
|
|
|
|
|
@{ $cols } = (@{ $cols },
|
|
|
|
|
{ name => "login", search => 1, title => $c->loc("Login") },
|
|
|
|
|
{ name => "is_master", title => $c->loc("Master") },
|
|
|
|
|
{ name => "is_active", title => $c->loc("Active") },
|
|
|
|
|
@ -43,6 +43,7 @@ sub list_admin :PathPart('administrator') :Chained('/') :CaptureArgs(0) {
|
|
|
|
|
@{ $cols } = (@{ $cols }, { name => "lawful_intercept", title => $c->loc("Lawful Intercept") });
|
|
|
|
|
}
|
|
|
|
|
$c->stash->{admin_dt_columns} = NGCP::Panel::Utils::Datatables::set_columns($c, $cols);
|
|
|
|
|
$c->stash->{special_admin_login} = NGCP::Panel::Utils::Admin::get_special_admin_login();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -75,7 +76,7 @@ sub create :Chained('list_admin') :PathPart('create') :Args(0) {
|
|
|
|
|
my ($self, $c) = @_;
|
|
|
|
|
|
|
|
|
|
$c->detach('/denied_page')
|
|
|
|
|
unless($c->user->is_master);
|
|
|
|
|
unless($c->user->is_master);
|
|
|
|
|
|
|
|
|
|
my $form;
|
|
|
|
|
my $params = {};
|
|
|
|
|
@ -134,7 +135,7 @@ sub base :Chained('list_admin') :PathPart('') :CaptureArgs(1) {
|
|
|
|
|
my ($self, $c, $administrator_id) = @_;
|
|
|
|
|
|
|
|
|
|
$c->detach('/denied_page')
|
|
|
|
|
unless($c->user->is_master);
|
|
|
|
|
unless($c->user->is_master);
|
|
|
|
|
|
|
|
|
|
unless ($administrator_id && is_int($administrator_id)) {
|
|
|
|
|
NGCP::Panel::Utils::Message::error(
|
|
|
|
|
@ -161,12 +162,16 @@ sub edit :Chained('base') :PathPart('edit') :Args(0) {
|
|
|
|
|
my $params = { $c->stash->{administrator}->get_inflated_columns };
|
|
|
|
|
$params->{reseller}{id} = delete $params->{reseller_id};
|
|
|
|
|
$params = merge($params, $c->session->{created_objects});
|
|
|
|
|
if($c->user->is_superuser) {
|
|
|
|
|
if($c->stash->{administrator}->login eq NGCP::Panel::Utils::Admin::get_special_admin_login()){
|
|
|
|
|
$form = NGCP::Panel::Form::get("NGCP::Panel::Form::Administrator::AdminSpecial", $c);
|
|
|
|
|
}elsif($c->user->is_superuser) {
|
|
|
|
|
$form = NGCP::Panel::Form::get("NGCP::Panel::Form::Administrator::Admin", $c);
|
|
|
|
|
} else {
|
|
|
|
|
$form = NGCP::Panel::Form::get("NGCP::Panel::Form::Administrator::Reseller", $c);
|
|
|
|
|
}
|
|
|
|
|
$form->field('password')->{required} = 0;
|
|
|
|
|
if($form->field('password')){
|
|
|
|
|
$form->field('password')->{required} = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$form->process(
|
|
|
|
|
posted => $posted,
|
|
|
|
|
@ -198,6 +203,16 @@ sub edit :Chained('base') :PathPart('edit') :Args(0) {
|
|
|
|
|
$form->values->{md5pass} = undef;
|
|
|
|
|
$form->values->{saltedpass} = NGCP::Panel::Utils::Admin::generate_salted_hash(delete $form->values->{password});
|
|
|
|
|
}
|
|
|
|
|
#should be after other fields, to remove all added values, e.g. reseller_id
|
|
|
|
|
if($c->stash->{administrator}->login eq NGCP::Panel::Utils::Admin::get_special_admin_login()) {
|
|
|
|
|
foreach my $field ($form->fields){
|
|
|
|
|
if($field ne 'is_active'){
|
|
|
|
|
delete $form->values->{$field};
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
delete $form->values->{reseller_id};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$c->stash->{administrator}->update($form->values);
|
|
|
|
|
delete $c->session->{created_objects}->{reseller};
|
|
|
|
|
NGCP::Panel::Utils::Message::info(
|
|
|
|
|
@ -225,6 +240,24 @@ 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) {
|
|
|
|
|
NGCP::Panel::Utils::Message::error(
|
|
|
|
|
c => $c,
|
|
|
|
|
data => { $c->stash->{administrator}->get_inflated_columns },
|
|
|
|
|
desc => $c->loc('Cannot delete myself'),
|
|
|
|
|
);
|
|
|
|
|
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/administrator'));
|
|
|
|
|
}
|
|
|
|
|
my $special_user_login = NGCP::Panel::Utils::Admin::get_special_admin_login();
|
|
|
|
|
if($c->stash->{administrator}->login eq $special_user_login) {
|
|
|
|
|
NGCP::Panel::Utils::Message::error(
|
|
|
|
|
c => $c,
|
|
|
|
|
data => { $c->stash->{administrator}->get_inflated_columns },
|
|
|
|
|
desc => $c->loc('Cannot delete "'.$special_user_login.'" administrator. Use "Edit" to disable it.'),
|
|
|
|
|
);
|
|
|
|
|
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/administrator'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if($c->stash->{administrator}->id == $c->user->id) {
|
|
|
|
|
NGCP::Panel::Utils::Message::error(
|
|
|
|
|
c => $c,
|
|
|
|
|
@ -253,6 +286,17 @@ sub delete :Chained('base') :PathPart('delete') :Args(0) {
|
|
|
|
|
|
|
|
|
|
sub api_key :Chained('base') :PathPart('api_key') :Args(0) {
|
|
|
|
|
my ($self, $c) = @_;
|
|
|
|
|
|
|
|
|
|
my $special_user_login = NGCP::Panel::Utils::Admin::get_special_admin_login();
|
|
|
|
|
if($c->stash->{administrator}->login eq $special_user_login) {
|
|
|
|
|
NGCP::Panel::Utils::Message::error(
|
|
|
|
|
c => $c,
|
|
|
|
|
data => { $c->stash->{administrator}->get_inflated_columns },
|
|
|
|
|
desc => $c->loc('Cannot change api key of the "'.$special_user_login.'" administrator'),
|
|
|
|
|
);
|
|
|
|
|
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/administrator'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
my $serial = $c->stash->{administrator}->ssl_client_m_serial;
|
|
|
|
|
my ($pem, $p12);
|
|
|
|
|
if ($c->req->body_parameters->{'gen.generate'}) {
|
|
|
|
|
@ -296,7 +340,7 @@ sub api_key :Chained('base') :PathPart('api_key') :Args(0) {
|
|
|
|
|
}
|
|
|
|
|
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/administrator'));
|
|
|
|
|
} elsif ($c->req->body_parameters->{'del.delete'}) {
|
|
|
|
|
$c->stash->{administrator}->update({
|
|
|
|
|
$c->stash->{administrator}->update({
|
|
|
|
|
ssl_client_m_serial => undef,
|
|
|
|
|
ssl_client_certificate => undef,
|
|
|
|
|
});
|
|
|
|
|
|