Add field and accessor in portal for plugin session info (#2609)

This commit is contained in:
Maxime Besson 2021-09-06 23:05:47 +02:00
parent 65c92f123e
commit 44cb0444fe
4 changed files with 30 additions and 9 deletions

View File

@ -704,7 +704,13 @@ sub mkSessionArray {
return "" unless ( ref $sessions eq "ARRAY" and @$sessions ); return "" unless ( ref $sessions eq "ARRAY" and @$sessions );
my @fields = sort keys %{ $self->conf->{sessionDataToRemember} }; # Merge user configuration with plugin self-configuration
my %rememberedData = %{ $self->pluginSessionDataToRemember };
@rememberedData{ keys %{ $self->conf->{sessionDataToRemember} } } =
values %{ $self->conf->{sessionDataToRemember} };
my @fields = sort( keys %rememberedData );
return $self->loadTemplate( return $self->loadTemplate(
$req, $req,
'sessionArray', 'sessionArray',
@ -712,11 +718,8 @@ sub mkSessionArray {
title => $title, title => $title,
displayUser => $displayUser, displayUser => $displayUser,
displayError => $displayError, displayError => $displayError,
fields => [ fields => [ map { { name => $rememberedData{$_} } } @fields ],
map { { name => $self->conf->{sessionDataToRemember}->{$_} } } sessions => [
@fields
],
sessions => [
map { map {
my $session = $_; my $session = $_;
{ {

View File

@ -94,6 +94,10 @@ has cors => ( is => 'rw' );
# Cookie SameSite value # Cookie SameSite value
has cookieSameSite => ( is => 'rw' ); has cookieSameSite => ( is => 'rw' );
# Plugins may declare the session data they want to store in login history here
has pluginSessionDataToRemember =>
( is => 'rw', isa => "HashRef", default => sub { {} } );
# INITIALIZATION # INITIALIZATION
sub init { sub init {
@ -229,6 +233,9 @@ sub reloadConf {
$self->spRules( {} ); $self->spRules( {} );
$self->hook( {} ); $self->hook( {} );
# Plugin history fields
$self->pluginSessionDataToRemember( {} );
# Load conf in portal object # Load conf in portal object
foreach my $key ( keys %$conf ) { foreach my $key ( keys %$conf ) {
$self->{conf}->{$key} ||= $conf->{$key}; $self->{conf}->{$key} ||= $conf->{$key};

View File

@ -161,6 +161,15 @@ sub canUpdateSfa {
return $msg; return $msg;
} }
sub addSessionDataToRemember {
my ( $self, $newData ) = @_;
for my $sessionAttr ( keys %{ $newData || {} } ) {
$self->p->pluginSessionDataToRemember->{$sessionAttr} =
$newData->{$sessionAttr};
}
return;
}
1; 1;
__END__ __END__

View File

@ -1120,9 +1120,11 @@ sub _sumUpSession {
$withoutUser $withoutUser
? {} ? {}
: { user => $session->{ $self->conf->{whatToTrace} } }; : { user => $session->{ $self->conf->{whatToTrace} } };
$res->{$_} = $session->{$_} $res->{$_} = $session->{$_} foreach (
foreach ( "_utime", "ipAddr", "_utime", "ipAddr",
keys %{ $self->conf->{sessionDataToRemember} } ); keys %{ $self->conf->{sessionDataToRemember} },
keys %{ $self->pluginSessionDataToRemember }
);
return $res; return $res;
} }