diff --git a/Netdisco/lib/App/Netdisco/Web/Plugin/AdminTask/UserLog.pm b/Netdisco/lib/App/Netdisco/Web/Plugin/AdminTask/UserLog.pm index 70657509..acde13c2 100644 --- a/Netdisco/lib/App/Netdisco/Web/Plugin/AdminTask/UserLog.pm +++ b/Netdisco/lib/App/Netdisco/Web/Plugin/AdminTask/UserLog.pm @@ -4,40 +4,63 @@ use Dancer ':syntax'; use Dancer::Plugin::Ajax; use Dancer::Plugin::DBIC; use Dancer::Plugin::Auth::Extensible; +use App::Netdisco::Util::ExpandParams 'expand_hash'; use App::Netdisco::Web::Plugin; -register_admin_task({ - tag => 'userlog', - label => 'User Activity Log', -}); +register_admin_task( + { tag => 'userlog', + label => 'User Activity Log', + } +); + +ajax '/ajax/control/admin/userlog/data' => require_role admin => sub { + send_error( 'Missing parameter', 400 ) + unless ( param('draw') && param('draw') =~ /\d+/ ); + + my $rs = schema('netdisco')->resultset('UserLog'); + + my $exp_params = expand_hash( scalar params ); + + my $recordsTotal = $rs->count; + + my @data = $rs->get_datatables_data($exp_params)->hri->all; + + my $recordsFiltered = $rs->get_datatables_filtered_count($exp_params); + + content_type 'application/json'; + return to_json( + { draw => int( param('draw') ), + recordsTotal => int($recordsTotal), + recordsFiltered => int($recordsFiltered), + data => \@data, + } + ); +}; ajax '/ajax/control/admin/userlog/del' => require_role admin => sub { - send_error('Missing entry', 400) unless param('entry'); + send_error( 'Missing entry', 400 ) unless param('entry'); - schema('netdisco')->txn_do(sub { - my $device = schema('netdisco')->resultset('UserLog') - ->search({entry => param('entry')})->delete; - }); + schema('netdisco')->txn_do( + sub { + my $device = schema('netdisco')->resultset('UserLog') + ->search( { entry => param('entry') } )->delete; + } + ); }; ajax '/ajax/control/admin/userlog/delall' => require_role admin => sub { - schema('netdisco')->txn_do(sub { - my $device = schema('netdisco')->resultset('UserLog')->delete; - }); + schema('netdisco')->txn_do( + sub { + my $device = schema('netdisco')->resultset('UserLog')->delete; + } + ); }; ajax '/ajax/content/admin/userlog' => require_role admin => sub { - my $set = schema('netdisco')->resultset('UserLog') - ->search({}, { - order_by => { -desc => [qw/creation event/] }, - rows => 200, - }); content_type('text/html'); - template 'ajax/admintask/userlog.tt', { - results => $set, - }, { layout => undef }; + template 'ajax/admintask/userlog.tt', {}, { layout => undef }; }; -true; +1; diff --git a/Netdisco/share/views/ajax/admintask/userlog.tt b/Netdisco/share/views/ajax/admintask/userlog.tt index 7fbc50d6..59832065 100644 --- a/Netdisco/share/views/ajax/admintask/userlog.tt +++ b/Netdisco/share/views/ajax/admintask/userlog.tt @@ -1,7 +1,7 @@ [% IF results.count == 0 %]
The user activity log is empty.
[% ELSE %] - +
@@ -11,20 +11,53 @@ - - [% WHILE (row = results.next) %] - - - - - - - - [% END %] -
CreationAction
[% row.creation | html_entity %][% row.username | html_entity %][% row.userip | html_entity %][% row.event | html_entity %] - - -
[% END %] +