diff --git a/lib/WebGUI/Authentication.pm b/lib/WebGUI/Authentication.pm index ed95031e4..baca8cd14 100644 --- a/lib/WebGUI/Authentication.pm +++ b/lib/WebGUI/Authentication.pm @@ -10,8 +10,6 @@ package WebGUI::Authentication; # http://www.plainblack.com info@plainblack.com #------------------------------------------------------------------- -use WebGUI::Authentication::LDAP; -use WebGUI::Authentication::WebGUI; use WebGUI::SQL; use strict; diff --git a/lib/WebGUI/Operation/Account.pm b/lib/WebGUI/Operation/Account.pm index 4052b4d59..a8c85af62 100644 --- a/lib/WebGUI/Operation/Account.pm +++ b/lib/WebGUI/Operation/Account.pm @@ -261,7 +261,7 @@ sub www_deactivateAccountConfirm { return WebGUI::Privilege::vitalComponent(); } elsif (($session{user}{userId} != 1) and $session{setting}{selfDeactivation}) { $u = WebGUI::User->new($session{user}{userId}); - $u->delete; + $u->status("Selfdestructed"); WebGUI::Session::end($session{var}{sessionId}); } return www_displayLogin(); @@ -419,10 +419,13 @@ sub www_login { if ($uid) { $u = WebGUI::User->new($uid); - - $cmd = $session{authentication}{$u->authMethod}."::validateUser"; - $success = eval{&$cmd($uid, $session{form}{identifier})}; - WebGUI::ErrorHandler::fatalError("Unable to load method validateUser on Authentication module: $_. ".$@) if($@); + if ($u->status eq 'Active') { + $cmd = $session{authentication}{$u->authMethod}."::validateUser"; + $success = eval{&$cmd($uid, $session{form}{identifier})}; + WebGUI::ErrorHandler::fatalError("Unable to load method validateUser on Authentication module: $_. ".$@) if($@); + } else { + $success = WebGUI::International::get(820); + } } else { $success = WebGUI::International::get(68); } diff --git a/lib/WebGUI/Operation/User.pm b/lib/WebGUI/Operation/User.pm index c155b5558..5c7f247ff 100644 --- a/lib/WebGUI/Operation/User.pm +++ b/lib/WebGUI/Operation/User.pm @@ -14,6 +14,7 @@ use Digest::MD5 qw(md5_base64); use Exporter; use strict qw(vars subs); use Tie::CPHash; +use Tie::IxHash; use WebGUI::DateTime; use WebGUI::HTMLForm; use WebGUI::Icon; @@ -55,7 +56,7 @@ sub _submenu { #------------------------------------------------------------------- sub www_addUser { - my (@array, $output, $groups, %hash, $f, $cmd, $html); + my (@array, $output, $groups, %hash, $f, $cmd, $html, %status); tie %hash, 'Tie::IxHash'; return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); $output .= helpIcon(5); @@ -66,8 +67,15 @@ sub www_addUser { } $f->hidden("op","addUserSave"); $f->text("username",WebGUI::International::get(50),$session{form}{username}); - $f->password("identifier",WebGUI::International::get(51)); $f->email("email",WebGUI::International::get(56)); + + tie %status, 'Tie::IxHash'; + %status = ( + Active =>WebGUI::International::get(817), + Deactivated =>WebGUI::International::get(818), + Selfdestructed =>WebGUI::International::get(819) + ); + $f->select("status",\%status,WebGUI::International::get(816), ['Active']); %hash = map {$_ => $_} @{$session{authentication}{available}}; $f->select("authMethod",\%hash,WebGUI::International::get(164),[$session{setting}{authMethod}]); @@ -97,6 +105,7 @@ sub www_addUserSave { unless ($uid) { $encryptedPassword = Digest::MD5::md5_base64($session{form}{identifier}); $u = WebGUI::User->new("new"); + $session{form}{uid}=$u->userId; $u->username($session{form}{username}); foreach (@{$session{authentication}{available}}) { @@ -104,12 +113,12 @@ sub www_addUserSave { eval{&$cmd}; WebGUI::ErrorHandler::fatalError("Unable to load method saveAddUser on Authentication module: $_. ".$@) if($@); } - + + $u->status($session{form}{status}); $u->authMethod($session{form}{authMethod}); @groups = $session{cgi}->param('groups'); $u->addToGroups(\@groups); $u->profileField("email",$session{form}{email}); - $session{form}{uid}=$u->userId; return www_editUser(); } else { $session{form}{op} = "addUser"; @@ -209,7 +218,7 @@ sub www_editGroupingSave { #------------------------------------------------------------------- sub www_editUser { return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); - my ($output, $f, $u, $cmd, $html, %hash); + my ($output, $f, $u, $cmd, $html, %hash, %status); $u = WebGUI::User->new($session{form}{uid}); $output .= helpIcon(5); $output .= '
| '.WebGUI::International::get(816).' | '.WebGUI::International::get(50).' | '.WebGUI::International::get(453).' | #'.WebGUI::International::get(454).' | '; diff --git a/lib/WebGUI/User.pm b/lib/WebGUI/User.pm index 9dc44d463..db18f1692 100644 --- a/lib/WebGUI/User.pm +++ b/lib/WebGUI/User.pm @@ -37,6 +37,7 @@ use WebGUI::Authentication; $karma = $u->karma; $lastUpdated = $u->lastUpdated; $languagePreference = $u->profileField("language",1); + $status = $u->status("somestatus"); $username = $u->username("jonboy"); $u->addToGroups(\@arr); @@ -305,6 +306,31 @@ sub profileField { #------------------------------------------------------------------- +=head2 status ( [ value ] ) + + Returns the status of the user. + +=item value + + If specified, the status is set to this value. + Possible values are 'Active', 'Selfdestructed' and 'Deactivated'. + +=cut + +sub status { + my ($class, $value); + $class = shift; + $value = shift; + if (defined $value) { + $class->{_user}{"status"} = $value; + WebGUI::SQL->write("update users set status=".quote($value).", + lastUpdated=".time()." where userId=$class->{_userId}"); + } + return $class->{_user}{"status"}; +} + +#------------------------------------------------------------------- + =head2 username ( [ value ] ) Returns the username. @@ -339,7 +365,4 @@ sub userId { return $_[0]->{_userId}; } - - - 1;