Add refresh session utility (#852)

TODO: link in menu
This commit is contained in:
Xavier Guimard 2017-02-16 16:11:12 +00:00
parent b4aad2ffd1
commit 99aa48105a
2 changed files with 32 additions and 0 deletions

View File

@ -109,6 +109,9 @@ sub init {
->addUnauthRoute( ping => 'pleaseAuth', ['GET'] )
->addAuthRoute( ping => 'authenticated', ['GET'] )
# Refresh session
->addAuthRoute( refresh => 'refresh', ['GET'] )
# Logout
->addAuthRoute( logout => 'logout', ['GET'] );

View File

@ -104,6 +104,35 @@ sub postAuthenticatedRequest {
);
}
sub refresh {
my ( $self, $req ) = @_;
$req->mustRedirect(1);
my %datas = %{ $req->userData };
$req->user( $datas{ $self->conf->{whatToTrace} } );
$req->id( $datas{_session_id} );
$self->userLogger->notice('Refresh request for '.$req->user);
foreach ( keys %datas ) {
delete $datas{$_} unless ( /^_/ or /^(?:startTime)$/ );
}
return $self->do(
$req,
[
'getUser',
@{ $self->betweenAuthAndDatas },
'setAuthSessionInfo',
'setSessionInfo',
'setMacros',
'setGroups',
'setLocalGroups',
sub {
$req->sessionInfo->{$_} = $datas{$_} foreach ( keys %datas );
return PE_OK;
},
'store',
]
);
}
sub logout {
my ( $self, $req ) = @_;
return $self->do(