1package App::Netdisco::Web::Plugin::AdminTask::UserLog; 2 3use Dancer ':syntax'; 4use Dancer::Plugin::Ajax; 5use Dancer::Plugin::DBIC; 6use Dancer::Plugin::Auth::Extensible; 7use App::Netdisco::Util::ExpandParams 'expand_hash'; 8 9use App::Netdisco::Web::Plugin; 10 11register_admin_task( 12 { tag => 'userlog', 13 label => 'User Activity Log', 14 } 15); 16 17ajax '/ajax/control/admin/userlog/data' => require_role admin => sub { 18 send_error( 'Missing parameter', 400 ) 19 unless ( param('draw') && param('draw') =~ /\d+/ ); 20 21 my $rs = schema('netdisco')->resultset('UserLog'); 22 23 my $exp_params = expand_hash( scalar params ); 24 25 my $recordsTotal = $rs->count; 26 27 my @data = $rs->get_datatables_data($exp_params)->hri->all; 28 29 my $recordsFiltered = $rs->get_datatables_filtered_count($exp_params); 30 31 content_type 'application/json'; 32 return to_json( 33 { draw => int( param('draw') ), 34 recordsTotal => int($recordsTotal), 35 recordsFiltered => int($recordsFiltered), 36 data => \@data, 37 } 38 ); 39}; 40 41ajax '/ajax/control/admin/userlog/del' => require_role admin => sub { 42 send_error( 'Missing entry', 400 ) unless param('entry'); 43 44 schema('netdisco')->txn_do( 45 sub { 46 my $device = schema('netdisco')->resultset('UserLog') 47 ->search( { entry => param('entry') } )->delete; 48 } 49 ); 50}; 51 52ajax '/ajax/control/admin/userlog/delall' => require_role admin => sub { 53 schema('netdisco')->txn_do( 54 sub { 55 my $device = schema('netdisco')->resultset('UserLog')->delete; 56 } 57 ); 58}; 59 60ajax '/ajax/content/admin/userlog' => require_role admin => sub { 61 62 content_type('text/html'); 63 template 'ajax/admintask/userlog.tt', {}, { layout => undef }; 64}; 65 661; 67