lemonldap-ng/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/Refresh.pm

45 lines
1.2 KiB
Perl
Raw Normal View History

2019-11-20 23:19:11 +01:00
package Lemonldap::NG::Portal::Plugins::Refresh;
use strict;
use Mouse;
2019-12-11 08:00:40 +01:00
our $VERSION = '2.1.0';
2019-11-20 23:19:11 +01:00
extends 'Lemonldap::NG::Portal::Main::Plugin',
'Lemonldap::NG::Portal::Lib::OtherSessions';
sub init {
my ($self) = @_;
$self->addUnauthRoute( refreshsessions => 'run', ['POST'] );
}
sub run {
2019-12-08 17:28:51 +01:00
my ( $self, $req ) = @_;
return $self->p->sendError( $req, 'Not a JSON request', 400 )
2019-11-20 23:19:11 +01:00
unless $req->wantJSON;
my $info = $req->jsonBodyToObj;
2019-12-08 17:28:51 +01:00
return $self->p->sendError( $req, 'Bad content', 400 ) unless $info->{uid};
2019-11-20 23:19:11 +01:00
my $sessions =
$self->module->searchOn( $self->moduleOpts, $self->conf->{whatToTrace},
2019-12-08 17:28:51 +01:00
$info->{uid} );
my $c = 0;
my $nb = scalar( keys %$sessions );
2019-11-20 23:19:11 +01:00
foreach my $id ( keys %$sessions ) {
$req->userData(
2019-12-08 17:28:51 +01:00
{ _session_id => $id, $self->conf->{whatToTrace} => $info->{uid} }
);
2019-11-20 23:19:11 +01:00
$req->id($id);
2019-12-08 17:28:51 +01:00
$req->user( $info->{uid} );
eval { $self->p->refresh($req); };
$self->logger->debug("Refresh: $@") if $@;
$c++;
2019-11-20 23:19:11 +01:00
}
2019-12-08 17:28:51 +01:00
$req->userData( {} );
2019-11-20 23:19:11 +01:00
$req->$_(undef) foreach (qw(user id));
2019-12-08 17:28:51 +01:00
return $self->sendJSONresponse( $req,
{ updated => $c, errors => ( $nb - $c ) } );
2019-11-20 23:19:11 +01:00
}
1;