49 lines
1.1 KiB
Perl
49 lines
1.1 KiB
Perl
# Status plugin
|
|
#
|
|
# this plugin adds /portalStatus entrypoint which display session count
|
|
# by category
|
|
|
|
package Lemonldap::NG::Portal::Plugins::Status;
|
|
|
|
use strict;
|
|
use Mouse;
|
|
use MIME::Base64;
|
|
|
|
our $VERSION = '2.0.0';
|
|
|
|
extends 'Lemonldap::NG::Portal::Main::Plugin';
|
|
|
|
# INITIALIZATION
|
|
|
|
sub init {
|
|
my ($self) = @_;
|
|
$self->addUnauthRoute( portalStatus => 'status', ['GET'] );
|
|
$self->addAuthRoute( portalStatus => 'status', ['GET'] );
|
|
return 1;
|
|
}
|
|
|
|
sub status {
|
|
my ( $self, $req ) = @_;
|
|
my $res = {};
|
|
foreach my $type (qw(global persistent cas saml oidc)) {
|
|
if ( $self->conf->{"${type}Storage"} ) {
|
|
my %modOpts = (
|
|
%{ $self->conf->{"${type}StorageOptions"} },
|
|
backend => $self->conf->{"${type}Storage"}
|
|
);
|
|
my $sessions = Lemonldap::NG::Common::Apache::Session->searchOn(
|
|
\%modOpts,
|
|
_session_kind => 'SSO',
|
|
'_session_id'
|
|
);
|
|
if (%$sessions) {
|
|
my @s = keys %$sessions;
|
|
$res->{$type} = @s;
|
|
}
|
|
}
|
|
}
|
|
return $self->p->sendJSONresponse($req,$res);
|
|
}
|
|
|
|
1;
|