From e33c7bebc3b077d5dbc8f804ff7627eb42ff8499 Mon Sep 17 00:00:00 2001 From: Matthew Wilson Date: Wed, 18 Jan 2006 01:45:55 +0000 Subject: [PATCH] an absolute slew of changes. --- lib/WebGUI/Asset.pm | 1 + lib/WebGUI/Asset/Wobject/Navigation.pm | 2 +- lib/WebGUI/Auth.pm | 13 ++++++------ lib/WebGUI/Auth/LDAP.pm | 4 +++- lib/WebGUI/Form/Date.pm | 8 +++---- lib/WebGUI/Form/HTMLArea.pm | 2 +- lib/WebGUI/Form/Integer.pm | 2 +- lib/WebGUI/International.pm | 3 ++- lib/WebGUI/Operation.pm | 2 +- lib/WebGUI/Operation/Admin.pm | 5 ++--- lib/WebGUI/Operation/Auth.pm | 28 ++++++++++++------------- lib/WebGUI/Operation/Cache.pm | 4 ++-- lib/WebGUI/Operation/Profile.pm | 13 ++++++------ lib/WebGUI/Operation/ProfileSettings.pm | 4 ++-- lib/WebGUI/Operation/User.pm | 2 +- lib/WebGUI/Operation/WebGUI.pm | 1 + lib/WebGUI/ProfileCategory.pm | 9 ++++---- lib/WebGUI/ProfileField.pm | 6 +++--- lib/WebGUI/Session.pm | 5 +++-- lib/WebGUI/Session/Http.pm | 4 +++- lib/WebGUI/Session/Var.pm | 28 ++++++++++++------------- t/User.t | 2 ++ 22 files changed, 80 insertions(+), 68 deletions(-) diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm index 69f336f56..8c5a074f9 100644 --- a/lib/WebGUI/Asset.pm +++ b/lib/WebGUI/Asset.pm @@ -366,6 +366,7 @@ sub getAssetAdderLinks { my $addToUrl = shift; my $type = shift || "assets"; my %links; + return []; foreach my $class (@{$self->session->config->get($type)}) { next unless $class; my $load = "use ".$class; diff --git a/lib/WebGUI/Asset/Wobject/Navigation.pm b/lib/WebGUI/Asset/Wobject/Navigation.pm index 8fc0ee9cb..3553add13 100644 --- a/lib/WebGUI/Asset/Wobject/Navigation.pm +++ b/lib/WebGUI/Asset/Wobject/Navigation.pm @@ -305,7 +305,7 @@ sub view { my $self = shift; # we've got to determine what our start point is based upon user conditions my $start; - $self->session->asset = WebGUI::Asset->newByUrl($self->session) unless ($self->session->asset); + $self->session->asset(WebGUI::Asset->newByUrl($self->session)) unless ($self->session->asset); my $current = $self->session->asset; if ($self->get("startType") eq "specificUrl") { $start = WebGUI::Asset->newByUrl($self->session,$self->get("startPoint")); diff --git a/lib/WebGUI/Auth.pm b/lib/WebGUI/Auth.pm index 9cae26303..62995d586 100644 --- a/lib/WebGUI/Auth.pm +++ b/lib/WebGUI/Auth.pm @@ -136,7 +136,7 @@ sub authenticate { my $self = shift; my $username = shift; my $i18n = WebGUI::International->new($self->session); - my $user = $self->session->db->quickHashRef("select userId,authMethod,status from users where username=".$self->session->db->$self->session->db->quote($username)); + my $user = $self->session->db->quickHashRef("select userId,authMethod,status from users where username=".$self->session->db->quote($username)); my $uid = $user->{userId}; #If userId does not exist or is not active, fail login if(!$uid){ @@ -326,7 +326,7 @@ Removes the user's authentication parameters from the database for all authentic sub deleteParams { my $self = shift; - $self->session->db->write("delete from authentication where userId=".$self->session->db->$self->session->db->quote($self->userId)); + $self->session->db->write("delete from authentication where userId=".$self->session->db->quote($self->userId)); } #------------------------------------------------------------------- @@ -363,7 +363,7 @@ sub displayAccount { $vars->{'account.form.submit'} = WebGUI::Form::submit($self->session,{}); $vars->{'account.form.footer'} = WebGUI::Form::formFooter($self->session,); - $vars->{'account.options'} = WebGUI::Operation::Shared::accountOptions(); + $vars->{'account.options'} = WebGUI::Operation::Shared::accountOptions($self->session); return WebGUI::Asset::Template->new($self->session,$self->getAccountTemplateId)->process($vars); } @@ -564,7 +564,7 @@ sub login { #Create a new user $uid = $self->userId; - $u = WebGUI::User->new($uid); + $u = WebGUI::User->new($self->session,$uid); $self->session->user({user=>$u}); $u->karma($self->session->setting->get("karmaPerLogin"),"Login","Just for logging in.") if ($self->session->setting->get("useKarma")); $self->_logLogin($uid,"success"); @@ -587,7 +587,7 @@ Superclass method that performs standard logout routines. sub logout { my $self = shift; $self->session->var->end($self->session->var->get("sessionId")); - $self->session->var->start(1); + $self->session->var->start(1,$self->session->getId); my $u = WebGUI::User->new($self->session,1); $self->{user} = $u; return ""; @@ -625,7 +625,8 @@ sub new { $self->{error} = ""; $self->{profile} = (); $self->{warning} = ""; - my @callable = ('init', shift); + my $call = shift; + my @callable = ('init', @{$call}); $self->{callable} = \@callable; bless $self, $class; return $self; diff --git a/lib/WebGUI/Auth/LDAP.pm b/lib/WebGUI/Auth/LDAP.pm index a19171dc2..01f7c1c12 100644 --- a/lib/WebGUI/Auth/LDAP.pm +++ b/lib/WebGUI/Auth/LDAP.pm @@ -416,7 +416,9 @@ sub new { my $userId = $_[1]; my @callable = ('createAccount','deactivateAccount','displayAccount','displayLogin','login','logout','createAccountSave','deactivateAccountConfirm'); my $self = WebGUI::Auth->new($session,$authMethod,$userId,\@callable); - $self->{_connection} = WebGUI::LDAPLink->new($session,($session->scratch->get("ldapConnection") || $session->setting->get("ldapConnection")))->get; + my $connection = $session->scratch->get("ldapConnection") || $session->setting->get("ldapConnection"); + my $ldaplink = WebGUI::LDAPLink->new($session,$connection); + $self->{_connection} = $ldaplink->get; my $i18n = WebGUI::International->new($session, "AuthLDAP"); my %ldapStatusCode = map { $_ => $i18n->get("LDAPLink_".$_) } (0..21, 32,33,34,36, 48..54, 64..71, 80); diff --git a/lib/WebGUI/Form/Date.pm b/lib/WebGUI/Form/Date.pm index 198205ed1..3806fe3ee 100644 --- a/lib/WebGUI/Form/Date.pm +++ b/lib/WebGUI/Form/Date.pm @@ -135,14 +135,14 @@ Renders a date picker control. sub toHtml { my $self = shift; if ($self->get("_defaulted") && $self->get("noDate") ) { - $self->get("value") = ''; + $self->set("value",''); } else { - $self->get("value") = $self->session->datetime->epochToSet($self->get("value")); + $self->set("value",$self->session->datetime->epochToSet($self->get("value"))); } - my $language = WebGUI::International::getLanguage($self->session->user->profileField("language"),"languageAbbreviation"); + my $language = WebGUI::International->new($self->session)->getLanguage($self->session->user->profileField("language"),"languageAbbreviation"); unless ($language) { - $language = WebGUI::International::getLanguage("English","languageAbbreviation"); + $language = WebGUI::International->new($self->session)->getLanguage($self,"English","languageAbbreviation"); } $self->session->style->setScript($self->session->config->get("extrasURL").'/calendar/calendar.js',{ type=>'text/javascript' }); $self->session->style->setScript($self->session->config->get("extrasURL").'/calendar/lang/calendar-'.$language.'.js',{ type=>'text/javascript' }); diff --git a/lib/WebGUI/Form/HTMLArea.pm b/lib/WebGUI/Form/HTMLArea.pm index 6f15a319d..8942ab3ca 100644 --- a/lib/WebGUI/Form/HTMLArea.pm +++ b/lib/WebGUI/Form/HTMLArea.pm @@ -117,7 +117,7 @@ Renders an HTML area field. sub toHtml { my $self = shift; $self->session->style->setScript($self->session->config->get("extrasURL").'/textFix.js',{ type=>'text/javascript' }); - $self->set("extras", $self->('extras') . ' onblur="fixChars(this.form.'.$self->get("name").')" mce_editable="true" '); + $self->set("extras", $self->get('extras') . ' onblur="fixChars(this.form.'.$self->get("name").')" mce_editable="true" '); return $self->SUPER::toHtml.WebGUI::Asset::RichEdit->new($self->session,$self->get("richEditId"))->getRichEditor($self->get('id')); my $i18n = WebGUI::International->new($self->session); my $richEdit = WebGUI::Asset::RichEdit->new($self->session,$self->get("richEditId")); diff --git a/lib/WebGUI/Form/Integer.pm b/lib/WebGUI/Form/Integer.pm index 77d1f12f7..6ab7b0d38 100644 --- a/lib/WebGUI/Form/Integer.pm +++ b/lib/WebGUI/Form/Integer.pm @@ -117,7 +117,7 @@ Renders an integer field. sub toHtml { my $self = shift; $self->session->style->setScript($self->session->config->get("extrasURL").'/inputCheck.js',{ type=>'text/javascript' }); - $self->set("extras", $self->('extras') . ' onkeyup="doInputCheck(this.form.'.$self->get("name").',\'0123456789-\')"'); + $self->set("extras", $self->get('extras') . ' onkeyup="doInputCheck(this.form.'.$self->get("name").',\'0123456789-\')"'); return $self->SUPER::toHtml; } diff --git a/lib/WebGUI/International.pm b/lib/WebGUI/International.pm index 3dc468955..a05e8a84f 100644 --- a/lib/WebGUI/International.pm +++ b/lib/WebGUI/International.pm @@ -146,7 +146,7 @@ sub getLanguages { foreach my $file (@files) { if ($file =~ /(.*?)\.pm$/) { my $language = $1; - $hashRef->{$language} = getLanguage($language,"label"); + $hashRef->{$language} = $self->getLanguage($language,"label"); } } return $hashRef; @@ -207,6 +207,7 @@ Specify a default language. Defaults to user preference or "English". sub new { my ($class, $session, $namespace, $language) = @_; + use WebGUI; WebGUI::dumpSession($session); bless( { _session => $session, _namespace => $namespace, diff --git a/lib/WebGUI/Operation.pm b/lib/WebGUI/Operation.pm index 69046b0d7..c3ed1505f 100644 --- a/lib/WebGUI/Operation.pm +++ b/lib/WebGUI/Operation.pm @@ -59,7 +59,7 @@ sub execute { $session->errorHandler->error("Couldn't compile operation: ".$operation->{$op}.". Root cause: ".$@) if ($@); # Call the method $cmd = $operation->{$op} . '::www_'.$op; - $output = eval{&$cmd($session)}; + $output = eval{&{$cmd}($session)}; $session->errorHandler->error("Couldn't execute operation : ".$cmd.". Root cause: ".$@) if ($@); } else { $session->errorHandler->security("execute an invalid operation: ".$op); diff --git a/lib/WebGUI/Operation/Admin.pm b/lib/WebGUI/Operation/Admin.pm index 83646f311..333070b5d 100644 --- a/lib/WebGUI/Operation/Admin.pm +++ b/lib/WebGUI/Operation/Admin.pm @@ -51,7 +51,7 @@ via WebGUI::Session::switchAdminOff() sub www_switchOffAdmin { my $session = shift; use WebGUI; WebGUI::dumpSession($session); return "" unless ($session->user->isInGroup(12)); - WebGUI::Session::switchAdminOff(); + $session->var->switchAdminOff(); return ""; } @@ -60,14 +60,13 @@ sub www_switchOffAdmin { =head2 www_adminConsole ( ) If the current user is in the Turn On Admin Group, then allow them to turn on Admin mode. -via WebGUI::Session::switchAdminOn() =cut sub www_switchOnAdmin { my $session = shift; use WebGUI; WebGUI::dumpSession($session); return "" unless ($session->user->isInGroup(12)); - WebGUI::Session::switchAdminOn(); + $session->var->switchAdminOn(); return ""; } diff --git a/lib/WebGUI/Operation/Auth.pm b/lib/WebGUI/Operation/Auth.pm index 82b6bcb72..8f58a9fc4 100644 --- a/lib/WebGUI/Operation/Auth.pm +++ b/lib/WebGUI/Operation/Auth.pm @@ -30,8 +30,8 @@ Get the instance of this object or create a new instance if none exists =cut sub getInstance { - my $session = shift; use WebGUI; WebGUI::dumpSession($session); - #Get Auth Settings + my $session = shift; use WebGUI; WebGUI::dumpSession($session); + #Get Auth Settings my $authMethod = $session->user->authMethod || $session->setting->get("authMethod"); $authMethod = $session->setting->get("authMethod") if($session->user->userId eq '1'); $authMethod = $_[0] if($_[0] && isIn($_[0], @{$session->config->get("authMethods")})); @@ -41,8 +41,8 @@ sub getInstance { my $load = "use ".$cmd; eval($load); $session->errorHandler->fatal("Authentication module failed to compile: $cmd.".$@) if($@); - my $auth = eval{$cmd->new($session, $authMethod,$userId)}; - $session->errorHandler->fatal("Couldn't instantiate authentication module: $authMethod. Root cause: ".$@) if($@); + my $auth = eval{$cmd->new($session, $authMethod,$userId)}; + $session->errorHandler->fatal("Couldn't instantiate authentication module: $authMethod. Root cause: ".$@) if($@); return $auth; } @@ -59,16 +59,16 @@ is returned. sub www_auth { my $session = shift; use WebGUI; WebGUI::dumpSession($session); - my $auth; - ($auth) = $session->db->quickArray("select authMethod from users where username=".$session->db->quote($session->form->process("username"))) if($session->form->process("username")); - my $authMethod = getInstance($session,$auth); - my $methodCall = shift || $session->form->process("method") || "init"; - if(!$authMethod->isCallable($methodCall)){ - $session->errorHandler->security("access uncallable auth method"); - my $i18n = WebGUI::International->new($session); - return $i18n->get(1077); - } - return $session->style->userStyle($authMethod->$methodCall); + my $auth; + ($auth) = $session->db->quickArray("select authMethod from users where username=".$session->db->quote($session->form->process("username"))) if($session->form->process("username")); + my $authMethod = getInstance($session,$auth); + my $methodCall = shift || $session->form->process("method") || "init"; + if(!$authMethod->isCallable($methodCall)){ + $session->errorHandler->security("access uncallable auth method"); + my $i18n = WebGUI::International->new($session); + return $i18n->get(1077); + } + return $session->style->userStyle($authMethod->$methodCall); } diff --git a/lib/WebGUI/Operation/Cache.pm b/lib/WebGUI/Operation/Cache.pm index 1729afa5f..9c0b0112b 100644 --- a/lib/WebGUI/Operation/Cache.pm +++ b/lib/WebGUI/Operation/Cache.pm @@ -78,7 +78,7 @@ sub www_flushCache { return $session->privilege->adminOnly() unless ($session->user->isInGroup(3)); my $cache = WebGUI::Cache->new($session,); $cache->flush; - return www_manageCache(); + return www_manageCache($session); } #------------------------------------------------------------------- @@ -108,7 +108,7 @@ sub www_manageCache { ''; $output .= ""; - return _submenu($output); + return _submenu($session,$output); } diff --git a/lib/WebGUI/Operation/Profile.pm b/lib/WebGUI/Operation/Profile.pm index 07c782385..7d869ca81 100644 --- a/lib/WebGUI/Operation/Profile.pm +++ b/lib/WebGUI/Operation/Profile.pm @@ -94,7 +94,7 @@ sub validateProfileData { #------------------------------------------------------------------- sub www_editProfile { my $session = shift; use WebGUI; WebGUI::dumpSession($session); - return WebGUI::Operation::Auth::www_auth("init") if($session->user->userId eq '1'); + return WebGUI::Operation::Auth::www_auth($session,"init") if($session->user->userId eq '1'); my $i18n = WebGUI::International->new($session); my $vars = {}; $vars->{displayTitle} .= '

'.$i18n->get(338).'

'; @@ -105,7 +105,7 @@ sub www_editProfile { $vars->{'profile.form.hidden'} = WebGUI::Form::hidden($session,{"name"=>"op","value"=>"editProfileSave"}); $vars->{'profile.form.hidden'} .= WebGUI::Form::hidden($session,{"name"=>"uid","value"=>$session->user->userId}); my @array = (); - foreach my $category (@{WebGUI::ProfileCategory->getCategories}) { + foreach my $category (@{WebGUI::ProfileCategory->getCategories($session)}) { next unless $category->isEditable; my @temp = (); foreach my $field (@{$category->getFields}) { @@ -150,7 +150,7 @@ sub www_editProfileSave { #------------------------------------------------------------------- sub www_viewProfile { my $session = shift; use WebGUI; WebGUI::dumpSession($session); - my $u = WebGUI::User->new($session->form->process("uid")); + my $u = WebGUI::User->new($session,$session->form->process("uid")); my $i18n = WebGUI::International->new($session); my $vars = {}; $vars->{displayTitle} = '

'.$i18n->get(347).' '.$u->username.'

'; @@ -161,7 +161,7 @@ sub www_viewProfile { return $session->privilege->insufficient() if(!$session->user->isInGroup(2)); my @array = (); - foreach my $category (@{WebGUI::ProfileCategory->getCategories}) { + foreach my $category (@{WebGUI::ProfileCategory->getCategories($session)}) { next unless ($category->get("visible")); push(@array, {'profile.category' => $category->getLabel}); foreach my $field (@{$category->getFields}) { @@ -175,9 +175,10 @@ sub www_viewProfile { } $vars->{'profile.elements'} = \@array; if ($session->user->userId eq $session->form->process("uid")) { - $vars->{'profile.accountOptions'} = WebGUI::Operation::Shared::accountOptions(); + $vars->{'profile.accountOptions'} = WebGUI::Operation::Shared::accountOptions($session); } - return $session->style->userStyle(WebGUI::Asset::Template->new("PBtmpl0000000000000052")->process($vars)); + + return $session->style->userStyle(WebGUI::Asset::Template->new($session,"PBtmpl0000000000000052")->process($vars)); } 1; diff --git a/lib/WebGUI/Operation/ProfileSettings.pm b/lib/WebGUI/Operation/ProfileSettings.pm index fd52a4ef1..5a58682ca 100644 --- a/lib/WebGUI/Operation/ProfileSettings.pm +++ b/lib/WebGUI/Operation/ProfileSettings.pm @@ -221,7 +221,7 @@ sub www_editProfileField { -value => $data->{dataDefault}, ); my %hash; - foreach my $category (@{WebGUI::ProfileCategory->getCategories}) { + foreach my $category (@{WebGUI::ProfileCategory->getCategories($session)}) { $hash{$category->getId} = $category->getLabel; } $f->selectBox( @@ -266,7 +266,7 @@ sub www_editProfileSettings { return $session->privilege->adminOnly() unless ($session->user->isInGroup(3)); my $i18n = WebGUI::International->new($session,"WebGUIProfile"); my $output = ""; - foreach my $category (@{WebGUI::ProfileCategory->getCategories}) { + foreach my $category (@{WebGUI::ProfileCategory->getCategories($session)}) { $output .= $session->icon->delete('op=deleteProfileCategoryConfirm;cid='.$category->getId,'',$i18n->get(466)); $output .= $session->icon->edit('op=editProfileCategory;cid='.$category->getId); $output .= $session->icon->moveUp('op=moveProfileCategoryUp;cid='.$category->getId); diff --git a/lib/WebGUI/Operation/User.pm b/lib/WebGUI/Operation/User.pm index 2f9884c52..b0bbc9bba 100644 --- a/lib/WebGUI/Operation/User.pm +++ b/lib/WebGUI/Operation/User.pm @@ -342,7 +342,7 @@ sub www_editUser { my $style = '" style="display: none;' unless ($_ eq $u->authMethod); $tabform->getTab("account")->raw(''.$authInstance->editUserForm.'
  
'); } - foreach my $category (@{WebGUI::ProfileCategory->getCategories}) { + foreach my $category (@{WebGUI::ProfileCategory->getCategories($session)}) { $tabform->getTab("profile")->raw(''.$category->getLabel.''); foreach my $field (@{$category->getFields}) { next if $field->getId =~ /contentPositions/; diff --git a/lib/WebGUI/Operation/WebGUI.pm b/lib/WebGUI/Operation/WebGUI.pm index 3c44b342c..83b19ebf3 100644 --- a/lib/WebGUI/Operation/WebGUI.pm +++ b/lib/WebGUI/Operation/WebGUI.pm @@ -107,6 +107,7 @@ sub www_setup { $session->setting->set('companyURL',$session->form->url("companyURL")); $session->setting->set('companyEmail',$session->form->email("companyEmail")); $session->http->setRedirect($session->url->gateway()); + $session->http->getHeader; return ""; } else { $output .= 'Admin Account'; diff --git a/lib/WebGUI/ProfileCategory.pm b/lib/WebGUI/ProfileCategory.pm index 419923a50..c5565ff70 100644 --- a/lib/WebGUI/ProfileCategory.pm +++ b/lib/WebGUI/ProfileCategory.pm @@ -124,10 +124,11 @@ Returns an array reference of all WebGUI::ProfileCategory objects in order of se =cut sub getCategories { - my $self = shift; + my $class = shift; + my $session = shift; my @categories = (); - foreach my $id ($self->session->db->buildArray("select profileCategoryId from userProfileCategory order by sequenceNumber")) { - push(@categories,WebGUI::ProfileCategory->new($self->session,$id)); + foreach my $id ($session->db->buildArray("select profileCategoryId from userProfileCategory order by sequenceNumber")) { + push(@categories,WebGUI::ProfileCategory->new($session,$id)); } return \@categories; } @@ -173,7 +174,7 @@ Returns the eval'd label for this category. sub getLabel { my $self = shift; - return WebGUI::Operation::Shared::secureEval($self->get("label")); + return WebGUI::Operation::Shared::secureEval($self->session,$self->get("label")); } #------------------------------------------------------------------- diff --git a/lib/WebGUI/ProfileField.pm b/lib/WebGUI/ProfileField.pm index 50fa633d7..3a51d1585 100644 --- a/lib/WebGUI/ProfileField.pm +++ b/lib/WebGUI/ProfileField.pm @@ -135,7 +135,7 @@ sub formField { $properties->{label} = $self->getLabel unless $properties->{label}; $properties->{fieldType} = $self->get("fieldType"); $properties->{name} = $self->getId; - my $values = WebGUI::Operation::Shared::secureEval($self->get("possibleValues")) || {}; + my $values = WebGUI::Operation::Shared::secureEval($self->session,$self->get("possibleValues")) || {}; my $orderedValues = {}; tie %{$orderedValues}, 'Tie::IxHash'; foreach my $ov (sort keys %{$values}) { @@ -150,7 +150,7 @@ sub formField { } elsif (!defined $u && $self->session->user->profileField($properties->{name})) { $default = $self->session->user->profileField($properties->{name}); } else { - $default = WebGUI::Operation::Shared::secureEval($properties->{dataDefault}); + $default = WebGUI::Operation::Shared::secureEval($self->session,$properties->{dataDefault}); } $properties->{value} = $default; if ($withWrapper == 1) { @@ -280,7 +280,7 @@ Returns the eval'd label for this field. sub getLabel { my $self = shift; - return WebGUI::Operation::Shared::secureEval($self->get("label")); + return WebGUI::Operation::Shared::secureEval($self->session,$self->get("label")); } #------------------------------------------------------------------- diff --git a/lib/WebGUI/Session.pm b/lib/WebGUI/Session.pm index cde9186ac..a3b712d17 100644 --- a/lib/WebGUI/Session.pm +++ b/lib/WebGUI/Session.pm @@ -359,8 +359,8 @@ sub open { my $config = WebGUI::Config->new($webguiRoot,$configFile); my $self = {_config=>$config, _server=>$server}; bless $self , $class; - $self->{_var} = WebGUI::Session::Var->new($self,$sessionId); $self->{_request} = Apache2::Request->new($request, POST_MAX => 1024 * $self->setting->get("maxAttachmentSize")) if (defined $request); + $self->{_var} = WebGUI::Session::Var->new($self,$sessionId); return $self; } @@ -535,10 +535,11 @@ sub user { } delete $self->{_stow}; $self->{_user} = $option->{user} || WebGUI::User->new($self, $userId); + $self->var->start($userId,$self->getId); + $self->request->user($self->{_user}->username) if ($self->request); } elsif (!exists $self->{_user}) { $self->{_user} = WebGUI::User->new($self, $self->var->get('userId')); } - $self->request->user($self->{_user}->username) if ($self->request); return $self->{_user}; } diff --git a/lib/WebGUI/Session/Http.pm b/lib/WebGUI/Session/Http.pm index 23186e173..6c97e3faa 100644 --- a/lib/WebGUI/Session/Http.pm +++ b/lib/WebGUI/Session/Http.pm @@ -77,7 +77,9 @@ Retrieves the cookies from the HTTP header and returns a hash reference containi sub getCookies { my $self = shift; if ($self->session->request) { - return APR::Request::Apache2->handle($self->session->request)->jar(); + my $jarHashRef = APR::Request::Apache2->handle($self->session->request)->jar(); + return $jarHashRef if $jarHashRef; + return {}; } else { return {}; diff --git a/lib/WebGUI/Session/Var.pm b/lib/WebGUI/Session/Var.pm index 1afc315f7..1adb36b30 100644 --- a/lib/WebGUI/Session/Var.pm +++ b/lib/WebGUI/Session/Var.pm @@ -213,20 +213,20 @@ Session id will be generated if not specified. In almost every case you should l =cut sub start { - my $self = shift; - my $userId = shift || 1; - my $sessionId = shift; - $self->{_var} = { - sessionId=>"new", - expires=>$self->session->datetime->time() + $self->session->setting->get("sessionTimeout"), - lastPageView=>$self->session->datetime->time(), - lastIP => $self->session->env->get("REMOTE_ADDR"), - adminOn => 0, - userId => $userId - }; - $self->{_var}{sessionId} = $self->session->{_sessionId} = $self->session->db->setRow("userSession","sessionId",$self->{_var}, $sessionId); - $self->session->http->setCookie("wgSession",$sessionId); - return $self->getId; + my $self = shift; + my $userId = shift || 1; + my $sessionId = shift || "new"; + $self->{_var} = { + sessionId=>$sessionId, + expires=>$self->session->datetime->time() + $self->session->setting->get("sessionTimeout"), + lastPageView=>$self->session->datetime->time(), + lastIP => $self->session->env->get("REMOTE_ADDR"), + adminOn => 0, + userId => $userId + }; + $self->{_var}{sessionId} = $self->session->{_sessionId} = $self->session->db->setRow("userSession","sessionId",$self->{_var}); + $self->session->http->setCookie("wgSession",$self->{_var}{sessionId}) unless $self->{_var}{sessionId} eq $self->session->http->getCookies->{"wgSession"}; + return $self->getId; } #------------------------------------------------------------------- diff --git a/t/User.t b/t/User.t index 677deb0d0..0d66ba547 100644 --- a/t/User.t +++ b/t/User.t @@ -67,6 +67,8 @@ is($user->authMethod, "WebGUI", 'authMethod() -- default value is WebGUI'); $lastUpdate = time(); $user->authMethod("LDAP"); is($user->authMethod, "LDAP", 'authMethod() -- set to LDAP'); +$user->authMethod("WebGUI"); +is($user->authMethod, "WebGUI", 'authMethod() -- set back to WebGUI'); is($user->lastUpdated, $lastUpdate, 'lastUpdated() -- authmethod change'); #See if datecreated is correct