From 99aa48105a98702639f751b09c6d8b7ff445825d Mon Sep 17 00:00:00 2001 From: Xavier Guimard Date: Thu, 16 Feb 2017 16:11:12 +0000 Subject: [PATCH] Add refresh session utility (#852) TODO: link in menu --- .../lib/Lemonldap/NG/Portal/Main/Init.pm | 3 ++ .../lib/Lemonldap/NG/Portal/Main/Run.pm | 29 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Init.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Init.pm index dda741b9e..061c40850 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Init.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Init.pm @@ -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'] ); diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Run.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Run.pm index eab6eccbd..602603984 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Run.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Run.pm @@ -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(