Closes #210 "Ajax request in menu to check if session is always available"

environments/ppa-mbqj77/deployments/1
Xavier Guimard 15 years ago
parent 8909dfb0c1
commit e39381a11b
  1. 18
      modules/lemonldap-ng-portal/example/skins/common/portal.js
  2. 5
      modules/lemonldap-ng-portal/example/skins/impact/menu.tpl
  3. 6
      modules/lemonldap-ng-portal/example/skins/pastel/menu.tpl
  4. 1
      modules/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Display.pm
  5. 12
      modules/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Simple.pm

@ -94,4 +94,22 @@ function isHiddenFormValueSet(option){
return false;
}
}
function ping() {
$.ajax({type:"POST",
url:scriptname,
data:{ping:1},
dataType:'json',
success:function(data){
if(!data.auth){
location.reload(true);
}
else{
setTimeout('ping();',60000);
}
}/*,
error:function(xhr, ajaxOptions, thrownError){
alert('Request failed Error code: '+xhr.status+', '+thrownError);
}*/
});
}

@ -73,5 +73,10 @@
</div>
</div>
<!-- Keep session alive -->
<script type="text/javascript">
scriptname='<TMPL_VAR NAME="SCRIPT_NAME">';
setTimeout('ping();',60000);
</script>
<TMPL_INCLUDE NAME="footer.tpl">

@ -166,5 +166,9 @@
</div>
</div>
<!-- Keep session alive -->
<script type="text/javascript">
scriptname='<TMPL_VAR NAME="SCRIPT_NAME">';
setTimeout('ping();',60000);
</script>
<TMPL_INCLUDE NAME="footer.tpl">

@ -99,6 +99,7 @@ sub display {
DISPLAY_MODULES => $self->{menuDisplayModules},
APPSLIST_MENU => $self->{menuAppslistMenu}, # For old templates
APPSLIST_DESC => $self->{menuAppslistDesc}, # For old templates
SCRIPT_NAME => $ENV{SCRIPT_NAME},
);
}

@ -1523,6 +1523,7 @@ sub controlExistingSession {
$self->_subProcess(qw(autoPost)) if ( $self->{postUrl} );
# Display logout message
untie %$h;
return PE_LOGOUT_OK;
}
@ -1533,6 +1534,13 @@ sub controlExistingSession {
$self->_sub( 'removeOther', $id );
}
untie %$h;
# Special ajax request "ping" to check if session is available
if ( $self->param('ping') ) {
print $self->header( -type => 'application/json' )
. '{"auth":true}';
$self->quit();
}
$self->{id} = $id;
# A session has been found => call existingSession
@ -1551,6 +1559,10 @@ sub controlExistingSession {
# Display logout success if logout asked
# and we do not have valid session
if ( $self->param('ping') ) {
print $self->header( -type => 'application/json' ) . '{"auth":false}';
$self->quit();
}
return PE_LOGOUT_OK if $self->param('logout');
# Else continue authentication process

Loading…
Cancel
Save