diff --git a/lib/NGCP/Panel/Controller/API/VoicemailGreetings.pm b/lib/NGCP/Panel/Controller/API/VoicemailGreetings.pm index 4cb5f43ad8..a3cb1d83e5 100644 --- a/lib/NGCP/Panel/Controller/API/VoicemailGreetings.pm +++ b/lib/NGCP/Panel/Controller/API/VoicemailGreetings.pm @@ -12,7 +12,7 @@ sub allowed_methods{ } sub allowed_roles { - return qw/admin reseller subscriberadmin/; + return qw/admin reseller subscriberadmin subscriber/; } sub api_description { diff --git a/lib/NGCP/Panel/Controller/API/VoicemailGreetingsItem.pm b/lib/NGCP/Panel/Controller/API/VoicemailGreetingsItem.pm index 89abcab297..8956882f85 100644 --- a/lib/NGCP/Panel/Controller/API/VoicemailGreetingsItem.pm +++ b/lib/NGCP/Panel/Controller/API/VoicemailGreetingsItem.pm @@ -11,7 +11,7 @@ sub allowed_methods{ } sub allowed_roles { - return qw/admin reseller subscriberadmin/; + return qw/admin reseller subscriberadmin subscriber/; } sub _set_config{ diff --git a/lib/NGCP/Panel/Controller/API/VoicemailRecordings.pm b/lib/NGCP/Panel/Controller/API/VoicemailRecordings.pm index efa896dddc..687ea15377 100644 --- a/lib/NGCP/Panel/Controller/API/VoicemailRecordings.pm +++ b/lib/NGCP/Panel/Controller/API/VoicemailRecordings.pm @@ -41,7 +41,7 @@ __PACKAGE__->config( action => { map { $_ => { ACLDetachTo => '/api/root/invalid_user', - AllowedRole => [qw/admin reseller subscriberadmin/], + AllowedRole => [qw/admin reseller subscriberadmin subscriber/], Args => 0, Does => [qw(ACL CheckTrailingSlash RequireSSL)], Method => $_, diff --git a/lib/NGCP/Panel/Controller/API/VoicemailRecordingsItem.pm b/lib/NGCP/Panel/Controller/API/VoicemailRecordingsItem.pm index e1121083e2..94a9aee683 100644 --- a/lib/NGCP/Panel/Controller/API/VoicemailRecordingsItem.pm +++ b/lib/NGCP/Panel/Controller/API/VoicemailRecordingsItem.pm @@ -34,7 +34,7 @@ __PACKAGE__->config( action => { map { $_ => { ACLDetachTo => '/api/root/invalid_user', - AllowedRole => [qw/admin reseller subscriberadmin/], + AllowedRole => [qw/admin reseller subscriberadmin subscriber/], Args => 1, Does => [qw(ACL RequireSSL)], Method => $_, diff --git a/lib/NGCP/Panel/Controller/API/VoicemailSettings.pm b/lib/NGCP/Panel/Controller/API/VoicemailSettings.pm index 37cf5e640d..9d7e535222 100644 --- a/lib/NGCP/Panel/Controller/API/VoicemailSettings.pm +++ b/lib/NGCP/Panel/Controller/API/VoicemailSettings.pm @@ -61,7 +61,7 @@ __PACKAGE__->config( action => { map { $_ => { ACLDetachTo => '/api/root/invalid_user', - AllowedRole => [qw/admin reseller subscriberadmin/], + AllowedRole => [qw/admin reseller subscriberadmin subscriber/], Args => 0, Does => [qw(ACL CheckTrailingSlash RequireSSL)], Method => $_, diff --git a/lib/NGCP/Panel/Controller/API/VoicemailSettingsItem.pm b/lib/NGCP/Panel/Controller/API/VoicemailSettingsItem.pm index a448ff30c8..cfb3b1efe4 100644 --- a/lib/NGCP/Panel/Controller/API/VoicemailSettingsItem.pm +++ b/lib/NGCP/Panel/Controller/API/VoicemailSettingsItem.pm @@ -39,7 +39,7 @@ __PACKAGE__->config( action => { (map { $_ => { ACLDetachTo => '/api/root/invalid_user', - AllowedRole => [qw/admin reseller subscriberadmin/], + AllowedRole => [qw/admin reseller subscriberadmin subscriber/], Args => 1, Does => [qw(ACL RequireSSL)], Method => $_, @@ -47,7 +47,7 @@ __PACKAGE__->config( } } @{ __PACKAGE__->allowed_methods }), @{ __PACKAGE__->get_journal_action_config(__PACKAGE__->resource_name,{ ACLDetachTo => '/api/root/invalid_user', - AllowedRole => [qw/admin reseller subscriberadmin/], + AllowedRole => [qw/admin reseller subscriberadmin subscriber/], Does => [qw(ACL RequireSSL)], }) } }, diff --git a/lib/NGCP/Panel/Controller/API/Voicemails.pm b/lib/NGCP/Panel/Controller/API/Voicemails.pm index f4b76ac00b..e95c02895a 100644 --- a/lib/NGCP/Panel/Controller/API/Voicemails.pm +++ b/lib/NGCP/Panel/Controller/API/Voicemails.pm @@ -70,7 +70,7 @@ __PACKAGE__->config( action => { map { $_ => { ACLDetachTo => '/api/root/invalid_user', - AllowedRole => [qw/admin reseller subscriberadmin/], + AllowedRole => [qw/admin reseller subscriberadmin subscriber/], Args => 0, Does => [qw(ACL CheckTrailingSlash RequireSSL)], Method => $_, diff --git a/lib/NGCP/Panel/Controller/API/VoicemailsItem.pm b/lib/NGCP/Panel/Controller/API/VoicemailsItem.pm index 272283adc9..c53bc12b2f 100644 --- a/lib/NGCP/Panel/Controller/API/VoicemailsItem.pm +++ b/lib/NGCP/Panel/Controller/API/VoicemailsItem.pm @@ -35,7 +35,7 @@ __PACKAGE__->config( action => { map { $_ => { ACLDetachTo => '/api/root/invalid_user', - AllowedRole => [qw/admin reseller subscriberadmin/], + AllowedRole => [qw/admin reseller subscriberadmin subscriber/], Args => 1, Does => [qw(ACL RequireSSL)], Method => $_, diff --git a/lib/NGCP/Panel/Role/API/VoicemailGreetings.pm b/lib/NGCP/Panel/Role/API/VoicemailGreetings.pm index 9c3db4ef95..5a9120d8ab 100644 --- a/lib/NGCP/Panel/Role/API/VoicemailGreetings.pm +++ b/lib/NGCP/Panel/Role/API/VoicemailGreetings.pm @@ -61,7 +61,9 @@ sub _item_rs { { 'voip_subscriber' => 'contract' } } }, }); } elsif ($c->user->roles eq "subscriber") { - return; # forbidden + $item_rs = $item_rs->search_rs({ + 'voip_subscriber.uuid' => $c->user->uuid, + }); } return $item_rs; } @@ -114,6 +116,10 @@ sub check_resource{ },{ join => { 'contract' => 'contact'}, }); + } elsif ($c->user->roles eq 'subscriber') { + $subscriber_rs = $subscriber_rs->search({ + 'me.uuid' => $c->user->uuid, + }); } my $billing_subscriber = $subscriber_rs->first; unless($billing_subscriber) { diff --git a/lib/NGCP/Panel/Role/API/VoicemailRecordings.pm b/lib/NGCP/Panel/Role/API/VoicemailRecordings.pm index 7c9cb06fcc..d9c199d627 100644 --- a/lib/NGCP/Panel/Role/API/VoicemailRecordings.pm +++ b/lib/NGCP/Panel/Role/API/VoicemailRecordings.pm @@ -28,6 +28,10 @@ sub _item_rs { },{ join => { mailboxuser => { provisioning_voip_subscriber => { voip_subscriber => 'contract' } } } }); + } elsif ($c->user->roles eq "subscriber") { + $item_rs = $item_rs->search({ + 'voip_subscriber.uuid' => $c->user->uuid, + }); } return $item_rs; } diff --git a/lib/NGCP/Panel/Role/API/VoicemailSettings.pm b/lib/NGCP/Panel/Role/API/VoicemailSettings.pm index 2ae6693774..0f7253cbec 100644 --- a/lib/NGCP/Panel/Role/API/VoicemailSettings.pm +++ b/lib/NGCP/Panel/Role/API/VoicemailSettings.pm @@ -30,7 +30,9 @@ sub _item_rs { 'contract.id' => $c->user->account_id, }); } elsif ($c->user->roles eq "subscriber") { - return; + $item_rs = $item_rs->search({ + 'voip_subscriber.uuid' => $c->user->uuid, + }); } return $item_rs; } diff --git a/lib/NGCP/Panel/Role/API/Voicemails.pm b/lib/NGCP/Panel/Role/API/Voicemails.pm index da9e7201e9..950b440893 100644 --- a/lib/NGCP/Panel/Role/API/Voicemails.pm +++ b/lib/NGCP/Panel/Role/API/Voicemails.pm @@ -36,7 +36,9 @@ sub _item_rs { join => { mailboxuser => { provisioning_voip_subscriber => { voip_subscriber => 'contract' } } } }); } elsif ($c->user->roles eq "subscriber") { - return; # forbidden + $item_rs = $item_rs->search({ + 'voip_subscriber.uuid' => $c->user->uuid, + }); } return $item_rs; } @@ -74,8 +76,6 @@ sub hal_from_item { sub resource_from_item { my ($self, $c, $item, $form) = @_; - $form //= $self->get_form($c); - my %resource = (); $resource{id} = int($item->id); $resource{duration} = is_int($item->duration) ? int($item->duration) : 0;