From 0e9531c0b5c5c73a9961d367b65b94f0d314a3d9 Mon Sep 17 00:00:00 2001 From: JT Smith Date: Sat, 30 Nov 2002 17:09:09 +0000 Subject: [PATCH] Everybody gets a session. --- lib/WebGUI/Operation/Account.pm | 10 +++++----- lib/WebGUI/Session.pm | 16 +++++++++++++--- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/lib/WebGUI/Operation/Account.pm b/lib/WebGUI/Operation/Account.pm index a8c85af62..0c03c2317 100644 --- a/lib/WebGUI/Operation/Account.pm +++ b/lib/WebGUI/Operation/Account.pm @@ -259,7 +259,7 @@ sub www_deactivateAccountConfirm { my ($u); if ($session{user}{userId} < 26) { return WebGUI::Privilege::vitalComponent(); - } elsif (($session{user}{userId} != 1) and $session{setting}{selfDeactivation}) { + } elsif ($session{setting}{selfDeactivation}) { $u = WebGUI::User->new($session{user}{userId}); $u->status("Selfdestructed"); WebGUI::Session::end($session{var}{sessionId}); @@ -302,7 +302,7 @@ sub www_displayAccount { #------------------------------------------------------------------- sub www_displayLogin { my ($output, $f); - if ($session{var}{sessionId}) { + if ($session{user}{userId} != 1) { $output .= www_displayAccount(); } else { $output .= '

'.WebGUI::International::get(66).'

'; @@ -431,7 +431,7 @@ sub www_login { } if ($success == 1) { - WebGUI::Session::start($uid); + WebGUI::Session::convertVisitorToUser($session{var}{sessionId},$uid); $u->karma($session{setting}{karmaPerLogin},"Login","Just for logging in.") if ($session{setting}{useKarma}); _logLogin($uid,"success"); return ""; @@ -450,7 +450,7 @@ sub www_logout { #------------------------------------------------------------------- sub www_recoverPassword { my ($output, $f); - if ($session{var}{sessionId}) { + if ($session{user}{userId} != 1) { $output .= www_displayAccount(); } else { $output .= '

'.WebGUI::International::get(71).'

'; @@ -506,7 +506,7 @@ sub www_recoverPasswordFinish { #------------------------------------------------------------------- sub www_updateAccount { my ($output, $error, $encryptedPassword, $passwordStatement, $u); - if ($session{var}{sessionId}) { + if ($session{user}{userId} != 1) { if ($session{form}{identifier1} ne "password") { $error = _hasBadPassword($session{form}{identifier1},$session{form}{identifier2}); unless ($error) { diff --git a/lib/WebGUI/Session.pm b/lib/WebGUI/Session.pm index 64d54c13e..ce5822036 100644 --- a/lib/WebGUI/Session.pm +++ b/lib/WebGUI/Session.pm @@ -208,6 +208,13 @@ sub close { $ENV{PATH_INFO} = "/"; #work around to fix a bug in mod_perl (win32) } +#------------------------------------------------------------------- +sub convertVisitorToUser { + WebGUI::SQL->write("update userSession set userId=$_[1] where sessionId=".quote($_[0])); + $session{var}{userId} = $_[1]; + refreshUserInfo($_[1]); +} + #------------------------------------------------------------------- sub end { WebGUI::SQL->write("delete from userSession where sessionId='$_[0]'",$session{dbh}); @@ -319,7 +326,11 @@ sub open { } ###---------------------------- ### session variables - _setupSessionVars($session{cookie}{wgSession},$session{setting}{sessionTimeout}); + if ($session{cookie}{wgSession} eq "") { + start(1); #setting up a visitor session + } else { + _setupSessionVars($session{cookie}{wgSession},$session{setting}{sessionTimeout}); + } ###---------------------------- ### current user's account and profile information (from users and userProfileData tables) _setupUserInfo($session{var}{userId}); @@ -403,8 +414,7 @@ sub start { my ($sessionId); $sessionId = _generateSessionId(); WebGUI::SQL->write("insert into userSession values ('$sessionId', ". - (time()+$session{setting}{sessionTimeout}).", ". - time().", 0, '$ENV{REMOTE_ADDR}', $_[0])",$session{dbh}); + (time()+$session{setting}{sessionTimeout}).", ".time().", 0, '$ENV{REMOTE_ADDR}', $_[0])"); setCookie("wgSession",$sessionId); refreshSessionVars($sessionId); }