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 );
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(
$req,
'sessionArray',
@ -712,11 +718,8 @@ sub mkSessionArray {
title => $title,
displayUser => $displayUser,
displayError => $displayError,
fields => [
map { { name => $self->conf->{sessionDataToRemember}->{$_} } }
@fields
],
sessions => [
fields => [ map { { name => $rememberedData{$_} } } @fields ],
sessions => [
map {
my $session = $_;
{

View File

@ -94,6 +94,10 @@ has cors => ( is => 'rw' );
# Cookie SameSite value
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
sub init {
@ -229,6 +233,9 @@ sub reloadConf {
$self->spRules( {} );
$self->hook( {} );
# Plugin history fields
$self->pluginSessionDataToRemember( {} );
# Load conf in portal object
foreach my $key ( keys %$conf ) {
$self->{conf}->{$key} ||= $conf->{$key};

View File

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

View File

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