Feature Proposal: Add counter to session variables
Motivation
Sometimes it is desirable to take some action on the very first page view after a login, such as to show a help dialog box. This is possible if we add a counter to the session variables where we can query how many pages have been viewed with the current session after login.
Description and Documentation
Add a
SESSION_REQUEST_NUMBER session variable that can be queried using
%SESSIONVARIABLE{SESSION_REQUEST_NUMBER}%. On first page view after login it is set to 1, next page view is 2, etc.
Examples
Impact
Implementation
--- lib/TWiki/LoginManager.pm.save1 2010-10-11 06:15:40.000000000 +0000
+++ lib/TWiki/LoginManager.pm 2011-03-31 19:32:39.000000000 +0000
@@ -512,6 +512,7 @@
undef, $twiki->{request},
{ Directory => "$TWiki::cfg{WorkingDir}/tmp" } );
die TWiki::LoginManager::Session->errstr() unless $this->{_cgisession};
+ $this->{_cgisession}->param( 'SESSION_REQUEST_NUMBER', 0 );
}
}
if( $authUser && $authUser ne $TWiki::cfg{DefaultUserLogin} ) {
@@ -527,13 +528,17 @@
# TODO: these are bare login's, so if and when there are multiple usermappings,
# this would need to include cUID..
$this->{_cgisession}->param( 'AUTHUSER', $authUser );
+ my $num = ( $this->{_cgisession}->param( 'SESSION_REQUEST_NUMBER' ) || 0 ) + 1;
+ $this->{_cgisession}->param( 'SESSION_REQUEST_NUMBER', $num );
}
$twiki->enterContext( 'authenticated' );
} else {
_trace( $this, "Session is NOT authenticated" );
# if we are not authenticated, expire any existing session
- $this->{_cgisession}->clear( [ 'AUTHUSER' ] )
- if( $TWiki::cfg{UseClientSessions} );
+ if( $TWiki::cfg{UseClientSessions} ) {
+ $this->{_cgisession}->clear( [ 'AUTHUSER' ] );
+ $this->{_cgisession}->param( 'SESSION_REQUEST_NUMBER', 0 );
+ }
$twiki->leaveContext( 'authenticated' );
}
if( $TWiki::cfg{UseClientSessions} ) {
--
Contributors: PeterThoeny - 2011-03-31
Discussion
This is now accepted by 7 days feedback period.
--
PeterThoeny - 2011-04-08
This is now implemented in
SVN trunk and documented.
--
PeterThoeny - 2011-04-09