diff --git a/lib/NGCP/Panel/Controller/Login.pm b/lib/NGCP/Panel/Controller/Login.pm index 1ba6d104e4..d4d0628931 100644 --- a/lib/NGCP/Panel/Controller/Login.pm +++ b/lib/NGCP/Panel/Controller/Login.pm @@ -77,16 +77,23 @@ sub index :Path Form { $realm); } elsif($realm eq 'subscriber') { # TODO: check for lock status? + my ($u, $d) = split /\@/, $user; + unless($d) { + $d = $c->req->uri->host; + } + my $authrs = $c->model('DB')->resultset('provisioning_voip_subscribers')->search({ + webusername => $u, + webpassword => $pass, + 'domain.domain' => $d, + }, { + join => 'domain', + }); $res = $c->authenticate( { - webusername => $user, + webusername => $u, webpassword => $pass, 'dbix_class' => { - searchargs => [{ - -and => [ - webusername => $user, - ], - }], + resultset => $authrs } }, $realm); diff --git a/lib/NGCP/Panel/Widget/Plugin/SubscriberCallsOverview.pm b/lib/NGCP/Panel/Widget/Plugin/SubscriberCallsOverview.pm new file mode 100644 index 0000000000..8b00d93fbf --- /dev/null +++ b/lib/NGCP/Panel/Widget/Plugin/SubscriberCallsOverview.pm @@ -0,0 +1,53 @@ +package NGCP::Panel::Widget::Plugin::SubscriberCallsOverview; +use Moose::Role; + +has 'template' => ( + is => 'ro', + isa => 'Str', + default => 'widgets/subscriber_calls_overview.tt' +); + +has 'type' => ( + is => 'ro', + isa => 'Str', + default => 'dashboard_widgets', +); + +has 'priority' => ( + is => 'ro', + isa => 'Int', + default => 10, +); + +around handle => sub { + my ($foo, $self, $c) = @_; + + my $out_rs = $c->model('DB')->resultset('cdr')->search({ + source_user_id => $c->user->uuid, + }); + my $in_rs = $c->model('DB')->resultset('cdr')->search({ + destination_user_id => $c->user->uuid, + }); + my $calls_rs = $out_rs->union($in_rs)->search(undef, { + order_by => { -desc => 'me.start_time' }, + })->slice(0, 9); + + $c->stash( + calls => $calls_rs, + ); + return; +}; + +sub filter { + my ($self, $c, $type) = @_; + + return $self if( + $type eq $self->type && + ($c->user_in_realm('subscriber') || $c->user_in_realm('subscriberadmin')) && + ref $c->controller eq 'NGCP::Panel::Controller::Dashboard' + ); + return; +} + +1; +# vim: set tabstop=4 expandtab: diff --git a/lib/NGCP/Panel/Widget/Plugin/SubscriberVmOverview.pm b/lib/NGCP/Panel/Widget/Plugin/SubscriberVmOverview.pm new file mode 100644 index 0000000000..6ebeaf8b90 --- /dev/null +++ b/lib/NGCP/Panel/Widget/Plugin/SubscriberVmOverview.pm @@ -0,0 +1,50 @@ +package NGCP::Panel::Widget::Plugin::SubscriberVmOverview; +use Moose::Role; + +has 'template' => ( + is => 'ro', + isa => 'Str', + default => 'widgets/subscriber_vm_overview.tt' +); + +has 'type' => ( + is => 'ro', + isa => 'Str', + default => 'dashboard_widgets', +); + +has 'priority' => ( + is => 'ro', + isa => 'Int', + default => 10, +); + +around handle => sub { + my ($foo, $self, $c) = @_; + + my $rs = $c->model('DB')->resultset('voicemail_spool')->search({ + mailboxuser => $c->user->uuid, + dir => { -like => '%/INBOX' }, + }, { + order_by => { -desc => 'me.origtime' }, + })->slice(0, 9); + + $c->stash( + vmails => $rs, + ); + return; +}; + +sub filter { + my ($self, $c, $type) = @_; + + return $self if( + $type eq $self->type && + ($c->user_in_realm('subscriber') || $c->user_in_realm('subscriberadmin')) && + ref $c->controller eq 'NGCP::Panel::Controller::Dashboard' + ); + return; +} + +1; +# vim: set tabstop=4 expandtab: diff --git a/share/layout/body.tt b/share/layout/body.tt index e40527115e..575c306246 100644 --- a/share/layout/body.tt +++ b/share/layout/body.tt @@ -9,7 +9,14 @@
diff --git a/share/templates/widgets/subscriber_calls_overview.tt b/share/templates/widgets/subscriber_calls_overview.tt new file mode 100644 index 0000000000..e76412e9f6 --- /dev/null +++ b/share/templates/widgets/subscriber_calls_overview.tt @@ -0,0 +1,51 @@ +[% USE Math -%] +