diff --git a/lib/WebGUI/Auth.pm b/lib/WebGUI/Auth.pm
index 31c00b70a..590f283e5 100644
--- a/lib/WebGUI/Auth.pm
+++ b/lib/WebGUI/Auth.pm
@@ -302,7 +302,7 @@ sub createAccountSave {
$u->authMethod($self->authMethod);
$u->karma($self->session->setting->get("karmaPerLogin"),"Login","Just for logging in.") if ($self->session->setting->get("useKarma"));
$u->updateProfileFields($profile) if ($profile);
- $self->saveParams($userId,$self->authMethod,$properties);
+ $self->update($properties);
if ($self->getSetting("sendWelcomeMessage")){
my $var;
@@ -433,32 +433,65 @@ sub deactivateAccountConfirm {
#-------------------------------------------------------------------
+=head2 delete ( [param] )
+
+Delete one or all parameters for this auth method. Deleting all parameters
+effectively removes this auth method from the user.
+
+=cut
+
+sub delete {
+ my ( $self, $param ) = @_;
+ my ( $db ) = $self->session->quick(qw( db ));
+
+ if ( $param ) {
+ $db->write( "DELETE FROM authentication WHERE userId=? AND authMethod=? AND fieldName=?",
+ [ $self->userId, $self->authMethod, $param ]
+ );
+ }
+ else {
+ $db->write( "DELETE FROM authentication WHERE userId=? AND authMethod=?",
+ [ $self->userId, $self->authMethod ]
+ );
+ }
+}
+
+#-------------------------------------------------------------------
+
=head2 deleteParams ( )
+NOTE: This method is deprecated and will be removed in a future version. Instead,
+use delete() to delete this auth method from the user.
+
Removes the user's authentication parameters from the database for all
authentication methods. This is primarily useful when deleting the user's
account.
=cut
+# DEPRECATED. Remove in 9.0
sub deleteParams {
my $self = shift;
- $self->session->db->write("delete from authentication where userId=".$self->session->db->quote($self->userId));
+ $self->delete;
}
#-------------------------------------------------------------------
=head2 deleteSingleParam ( )
+NOTE: This method is deprecated and will be removed in a future version. Instead,
+use delete("param") to delete a single param from this auth method.
+
Removes a single authentication parameter from the database.
=cut
+# DEPRECATED. Remove in 9.0
sub deleteSingleParam {
my $self = shift;
my ($userId, $authMethod, $fieldName) = @_;
- $self->session->db->write('delete from authentication where userId = ? and authMethod = ? and fieldName = ?', [$userId, $authMethod, $fieldName]);
+ $self->delete( $fieldName );
}
@@ -579,37 +612,48 @@ sub editUserForm {
#-------------------------------------------------------------------
-=head2 editUserFormSave ( properties )
+=head2 editUserFormSave ( )
Saves user elements unique to this authentication method
=cut
sub editUserFormSave {
- my $self = shift;
- $self->saveParams($self->userId,$self->authMethod,$_[0]);
+ # Added for interface purposes only. Needs to be implemented in the subclass
}
#-------------------------------------------------------------------
-=head2 editUserSettingsForm ( )
+=head2 editSettingsForm ( )
You need to override this method in your auth module. It needs to return a the rows in a form for the stuff you want to be configured through webgui settings.
=cut
+sub editSettingsForm {
+}
+
+# Backwards compatiblity for method renaming
sub editUserSettingsForm {
+ my $self = shift;
+ return $self->editSettingsForm( @_ );
}
#-------------------------------------------------------------------
-=head2 editUserSettingsFormSave ( )
+=head2 editSettingsFormSave ( )
-You need to override this method in your auth module. It's the save for the editUserSettingsFormSave method.
+You need to override this method in your auth module. It's the save for the editSettingsFormSave method.
=cut
+sub editSettingsFormSave {
+}
+
+# Backwards compatiblity for method renaming
sub editUserSettingsFormSave {
+ my $self = shift;
+ return $self->editSettingsFormSave( @_ );
}
#-------------------------------------------------------------------
@@ -623,9 +667,37 @@ Sets or returns the error currently stored in the object
sub error {
my $self = shift;
return $self->{error} if (!$_[0]);
+ $self->session->log->error( $_[0] );
$self->{error} = $_[0];
}
+#----------------------------------------------------------------------------
+
+=head2 get ( [param] )
+
+Get one or all parameters for this auth instance. Returns either a hashref or a
+single scalar.
+
+=cut
+
+sub get {
+ my ( $self, $param ) = @_;
+ my ( $db ) = $self->session->quick(qw( db ));
+
+ if ( $param ) {
+ return $db->quickScalar(
+ "SELECT fieldData FROM authentication WHERE userId=? AND authMethod=? AND fieldName=?",
+ [ $self->userId, $self->authMethod, $param ],
+ );
+ }
+ else {
+ return $db->buildHashRef(
+ "SELECT fieldName, fieldData FROM authentication WHERE userId=? AND authMethod=?",
+ [ $self->userId, $self->authMethod ],
+ );
+ }
+}
+
#-------------------------------------------------------------------
=head2 getAccountTemplateId ( )
@@ -732,10 +804,13 @@ sub getLoginTemplateId {
=head2 getParams ( )
+NOTE: This method is deprecated and will be removed in a future version. Use get() instead.
+
Returns a hash reference with the user's authentication information. This method uses data stored in the instance of the object.
=cut
+# DEPRECATED. Remove in 9.0
sub getParams {
my $self = shift;
my $userId = $_[0] || $self->userId;
@@ -780,23 +855,29 @@ sub init {
=head2 isAdmin ()
+NOTE: This method is deprecated. Use user->isAdmin instead.
+
Returns 1 if the user is user 3 (admin).
=cut
+# DEPRECATED. Remove in 9.0
sub isAdmin {
my $self = shift;
- return $self->userId eq '3';
+ return $self->user->isAdmin;
}
#-------------------------------------------------------------------
=head2 isCallable ( method )
+NOTE: Deprecated. Unnecessary when setCallable is removed.
+
Returns whether or not a method is callable
=cut
+# DEPRECATED. Remove in 9.0
sub isCallable {
my $self = shift;
return 1 if $_[0] ~~ $self->{callable};
@@ -808,23 +889,29 @@ sub isCallable {
=head2 isRegistered ()
+NOTE: Deprecated. Use user->isRegistered instead.
+
Returns 1 if the user is not a visitor.
=cut
+# DEPRECATED. Remove in 9.0
sub isRegistered {
my $self = shift;
- return $self->userId ne '1';
+ return $self->user->isRegistered;
}
#-------------------------------------------------------------------
=head2 isVisitor ()
+NOTE: Deprecated. Use user->isVisitor instead.
+
Returns 1 if the user is a visitor.
=cut
+# DEPRECATED. Remove in 9.0
sub isVisitor {
my $self = shift;
return $self->userId eq '1';
@@ -843,7 +930,6 @@ Open version tag is reclaimed if user is in site wide or singlePerUser mode.
sub login {
my $self = shift;
-
#Create a new user
my $uid = $self->userId;
my $u = WebGUI::User->new($self->session,$uid);
@@ -923,61 +1009,37 @@ sub logout {
#-------------------------------------------------------------------
-=head2 new ( session, authMethod [,userId,callable] )
+=head2 new ( session, [ userId ] )
Constructor.
=head3 session
-=head3 authMethod
-
-This object's authentication method
-
=head3 userId
userId for the user requesting authentication. This defaults to $self->session->user->userId
-=head3 callable
-
-Array reference of methods allowed to be called externally;
-
=cut
sub new {
- my $self = {};
my $class = shift;
+ my $self = bless {}, $class;
$self->{_session} = shift;
- $self->{authMethod} = shift;
my $userId = shift || $self->{_session}->user->userId;
- # Can't do this... if you're updating the account of a user that's not you, this will not work
- #$self->{user} = $self->{_session}->user;
$self->{user} = WebGUI::User->new($self->{_session}, $userId);
$self->{error} = "";
$self->{profile} = ();
- $self->{warning} = "";
- my $call = shift;
- my @callable = ('init', 'showMessageOnLogin', @{$call});
- $self->{callable} = \@callable;
- bless $self, $class;
+
+ # Determine the authmethod from the classname
+ ($self->{authMethod}) = $class =~ m/^WebGUI::Auth::(.+)/;
+
+ $self->setCallable([qw( init showMessageOnLogin )]);
+
return $self;
}
#-------------------------------------------------------------------
-=head2 profile ( )
-
-Sets or returns the Profile hash for a user.
-
-=cut
-
-sub profile {
- my $self = shift;
- return $self->{profile} if (!$_[0]);
- $self->{profile} = $_[0];
-}
-
-#-------------------------------------------------------------------
-
sub session {
my $self = shift;
return $self->{_session};
@@ -987,6 +1049,9 @@ sub session {
=head2 setCallable ( callableMethods )
+NOTE: This method is deprecated and will be removed in a future version. Instead,
+any method prefixed with www_ is available from the web interface.
+
adds elements to the callable routines list. This list determines whether or not a method in this instance is
allowed to be called externally
@@ -996,6 +1061,7 @@ Array reference containing a list of methods for this authentication instance th
=cut
+# DEPRECATED. Remove in 9.0
sub setCallable {
my $self = shift;
my @callable = @{$self->{callable}};
@@ -1007,6 +1073,9 @@ sub setCallable {
=head2 saveParams ( userId, authMethod, data )
+NOTE: This method is deprecated and will be removed in a future version. Instead,
+use update() to update the parameters of this auth instance.
+
Saves the user's authentication parameters to the database.
=head3 userId
@@ -1023,13 +1092,11 @@ A hash reference containing parameter names and values to be saved.
=cut
+# DEPRECATED. Remove in 9.0
sub saveParams {
my $self = shift;
my ($uid, $authMethod, $data) = @_;
- foreach (keys %{$data}) {
- $self->session->db->write("delete from authentication where userId=".$self->session->db->quote($uid)." and authMethod=".$self->session->db->quote($authMethod)." and fieldName=".$self->session->db->quote($_));
- $self->session->db->write("insert into authentication (userId,authMethod,fieldData,fieldName) values (".$self->session->db->quote($uid).",".$self->session->db->quote($authMethod).",".$self->session->db->quote($data->{$_}).",".$self->session->db->quote($_).")");
- }
+ return $self->update( $data );
}
#----------------------------------------------------------------------------
@@ -1057,8 +1124,6 @@ sub showMessageOnLogin {
# Add the link to continue
my $session = $self->session;
- $session->log->warn("returnUrl: >".$self->session->form->get( 'returnUrl' )."<");
- $session->log->warn("redirectAfterLoginUrl: >".$self->session->form->get( 'returnUrl' )."<");
my $redirectUrl = $self->session->form->get( 'returnUrl' )
|| $self->session->setting->get("redirectAfterLoginUrl")
|| $self->session->scratch->get( 'redirectAfterLogin' )
@@ -1101,6 +1166,39 @@ sub timeRecordSession {
}
}
+#----------------------------------------------------------------------------
+
+=head2 update ( params )
+
+Update the parameters for this auth instance. Params is a list of name => value pairs.
+
+=cut
+
+sub update {
+ my $self = shift;
+ my ( $db ) = $self->session->quick(qw( db ));
+ my %params;
+
+ # Allow both hashref and hash
+ if ( @_ == 1 ) {
+ %params = %{ $_[0] };
+ }
+ else {
+ %params = @_;
+ }
+
+ foreach my $param (keys %params) {
+ $db->write(
+ "delete from authentication where userId=? and authMethod=? and fieldName=?",
+ [ $self->userId, $self->authMethod, $param ],
+ );
+ $db->write(
+ "insert into authentication (userId,authMethod,fieldName,fieldData) values (?,?,?,?)",
+ [ $self->userId, $self->authMethod, $param, $params{ $param } ],
+ );
+ }
+}
+
#-------------------------------------------------------------------
=head2 user ( [user] )
@@ -1168,18 +1266,4 @@ sub validUsername {
return $error eq "";
}
-#-------------------------------------------------------------------
-
-=head2 warning ( [warningMsg] )
-
-Sets or Returns a warning in the object
-
-=cut
-
-sub warning {
- my $self = shift;
- return $self->{warning} if (!$_[0]);
- $self->{warning} = $_[0];
-}
-
1;
diff --git a/lib/WebGUI/Auth/Facebook.pm b/lib/WebGUI/Auth/Facebook.pm
index 3801e0950..7b03bbb9f 100644
--- a/lib/WebGUI/Auth/Facebook.pm
+++ b/lib/WebGUI/Auth/Facebook.pm
@@ -34,19 +34,6 @@ These methods are available from this class:
#----------------------------------------------------------------------------
-=head2 new ( ... )
-
-Create a new object
-
-=cut
-
-sub new {
- my $self = shift->SUPER::new(@_);
- return bless $self, __PACKAGE__; # Auth requires rebless
-}
-
-#----------------------------------------------------------------------------
-
=head2 createFacebookUser ( fbuser )
my $user = $self->createFacebookUser( $fb->fetch('me') );
@@ -62,9 +49,9 @@ sub createFacebookUser {
$user->profileField('email', $fbuser->{email});
$user->profileField('firstName', $fbuser->{first_name});
$user->profileField('lastName', $fbuser->{last_name});
- $self->saveParams( $user->userId, $self->authMethod, {
+ $self->update(
"facebookUserId" => $fbuser->{id},
- } );
+ );
return $user;
}
diff --git a/lib/WebGUI/Auth/LDAP.pm b/lib/WebGUI/Auth/LDAP.pm
index fc8d83921..e8f508ffc 100644
--- a/lib/WebGUI/Auth/LDAP.pm
+++ b/lib/WebGUI/Auth/LDAP.pm
@@ -154,7 +154,9 @@ sub authenticate {
my $userId = $self->userId;
my $identifier = $_[1];
- my $userData = $self->getParams;
+ my $userData = $self->get;
+
+ $self->session->log->error( "USERID: " . $userId );
$error .= '
'.$i18n->get(12,'AuthLDAP').'' if ($userData->{ldapUrl} eq "");
$error .= ''.$i18n->get(11,'AuthLDAP').'' if ($userData->{connectDN} eq "");
@@ -185,7 +187,7 @@ sub authenticate {
# _isValidLDAPUser will set _connectDN to new correct value
$auth = $ldap->bind(dn=>$self->{_connectDN}, password=>$identifier);
my $message = "DN has been changed for user ".$_[0]." from \"".$userData->{connectDN}."\" to \"".$self->{_connectDN}."\"";
- $self->saveParams($self->user->userId, $self->authMethod, { connectDN => $self->{_connectDN} });
+ $self->update( connectDN => $self->{_connectDN} );
$self->session->log->warn($message);
}
@@ -453,7 +455,7 @@ sub displayLogin {
sub editUserForm {
my $self = shift;
- my $userData = $self->getParams;
+ my $userData = $self->get;
my $connection = $self->getLDAPConnection;
return '' unless $connection;
my $ldapUrl = $self->session->form->process('authLDAP_ldapUrl') || $userData->{ldapUrl} || $connection->{ldapUrl};
@@ -729,20 +731,21 @@ sub login {
#-------------------------------------------------------------------
-=head2 new ( session, authMethod, userId )
+=head2 new ( session, userId )
-Create a new Auth instance. C is the name of this auth method ("ldap").
-C is the ID of the user to be authenticated.
+Create a new Auth instance. C is the ID of the user to be authenticated.
=cut
sub new {
my $class = shift;
my $session = shift;
- my $authMethod = $_[0];
- my $userId = $_[1];
- my @callable = ('createAccount','deactivateAccount','displayAccount','displayLogin','login','logout','createAccountSave','deactivateAccountConfirm');
- my $self = WebGUI::Auth->new($session,$authMethod,$userId,\@callable);
+ my $userId = shift;
+ my $self = $class->SUPER::new($session,$userId);
+ $self->setCallable([
+ 'createAccount','deactivateAccount','displayAccount','displayLogin',
+ 'login','logout','createAccountSave','deactivateAccountConfirm',
+ ]);
#my $connection = $session->scratch->get("ldapConnection") || $session->setting->get("ldapConnection");
#my $ldaplink = WebGUI::LDAPLink->new($session,$connection);
#$self->{_connection} = $ldaplink->get if $ldaplink;
@@ -751,7 +754,7 @@ sub new {
my %ldapStatusCode = map { $_ => $i18n->get("LDAPLink_".$_) }
(0..21, 32,33,34,36, 48..54, 64..71, 80);
$self->{_statusCode} = \%ldapStatusCode;
- bless $self, $class;
+ return $self;
}
#-------------------------------------------------------------------
diff --git a/lib/WebGUI/Auth/Twitter.pm b/lib/WebGUI/Auth/Twitter.pm
index de2408aa1..21c6d974c 100644
--- a/lib/WebGUI/Auth/Twitter.pm
+++ b/lib/WebGUI/Auth/Twitter.pm
@@ -34,19 +34,6 @@ These methods are available from this class:
#----------------------------------------------------------------------------
-=head2 new ( ... )
-
-Create a new object
-
-=cut
-
-sub new {
- my $self = shift->SUPER::new(@_);
- return bless $self, __PACKAGE__; # Auth requires rebless
-}
-
-#----------------------------------------------------------------------------
-
=head2 createTwitterUser ( twitterUserId, username )
my $user = $self->createTwitterUser( $twitterUserId, $username );
@@ -59,9 +46,10 @@ sub createTwitterUser {
my ( $self, $twitterUserId, $username ) = @_;
my $user = WebGUI::User->create( $self->session );
$user->username( $username );
- $self->saveParams( $user->userId, $self->authMethod, {
+ $self->user( $user );
+ $self->update(
"twitterUserId" => $twitterUserId,
- } );
+ );
return $user;
}
@@ -281,7 +269,6 @@ sub www_setUsername {
if ( !WebGUI::User->newByUsername( $session, $username ) ) {
my $twitterUserId = $scratch->get( "AuthTwitterUserId" );
my $user = $self->createTwitterUser( $twitterUserId, $username );
- $self->user( $user );
return $self->login;
}
diff --git a/lib/WebGUI/Auth/WebGUI.pm b/lib/WebGUI/Auth/WebGUI.pm
index 04b6bbde6..bdc3a3ef5 100644
--- a/lib/WebGUI/Auth/WebGUI.pm
+++ b/lib/WebGUI/Auth/WebGUI.pm
@@ -120,7 +120,7 @@ sub authenticate {
return 0 if !$auth;
$identifier = $_[1];
- $userData = $self->getParams;
+ $userData = $self->get;
if (($self->hashPassword($identifier) eq $$userData{identifier}) && ($identifier ne "")) {
return 1;
}
@@ -275,7 +275,7 @@ sub createAccountSave {
# Send validation e-mail if required
if ($setting->get("webguiValidateEmail")) {
my $key = $session->id->generate;
- $self->saveParams($self->userId,"WebGUI",{emailValidationKey=>$key});
+ $self->update(emailValidationKey=>$key);
my $mail = WebGUI::Mail::Send->create($self->session, {
to => $profile->{email},
subject => $i18n->get('email address validation email subject','AuthWebGUI')
@@ -344,7 +344,7 @@ sub displayAccount {
my $vars;
return $self->displayLogin($_[0]) if ($self->isVisitor);
my $i18n = WebGUI::International->new($self->session);
- my $userData = $self->getParams;
+ my $userData = $self->get;
$vars->{'account.message'} = $_[0] if ($_[0]);
$vars->{'account.noform'} = 1;
if($userData->{changeUsername} || (!defined $userData->{changeUsername} && $self->session->setting->get("webguiChangeUsername"))){
@@ -393,7 +393,7 @@ sub displayLogin {
sub editUserForm {
my $self = shift;
- my $userData = $self->getParams;
+ my $userData = $self->get;
my $f = WebGUI::HTMLForm->new($self->session);
my $i18n = WebGUI::International->new($self->session);
$f->password(
@@ -440,7 +440,7 @@ sub editUserFormSave {
my $self = shift;
my $userId = $self->session->form->get("uid");
my $properties;
- my $userData = $self->getParams($userId);
+ my $userData = $self->get;
my $identifier = $self->session->form->process('authWebGUI.identifier');
unless (!$identifier || $identifier eq "password") {
$properties->{identifier} = $self->hashPassword($self->session->form->process('authWebGUI.identifier'));
@@ -781,7 +781,7 @@ sub login {
return $self->displayLogin("".$i18n->get(70)."
".$self->error);
}
- my $userData = $self->getParams;
+ my $userData = $self->get;
if($self->getSetting("passwordTimeout") && $userData->{passwordTimeout}){
my $expireTime = $userData->{passwordLastUpdated} + $userData->{passwordTimeout};
if (time() >= $expireTime){
@@ -798,11 +798,16 @@ sub login {
sub new {
my $class = shift;
my $session = shift;
- my $authMethod = $_[0];
- my $userId = $_[1];
- my @callable = ('validateEmail','createAccount','deactivateAccount','displayAccount','displayLogin','login','logout','recoverPassword','resetExpiredPassword','recoverPasswordFinish','createAccountSave','deactivateAccountConfirm','resetExpiredPasswordSave','updateAccount', 'emailResetPassword', 'emailResetPasswordFinish');
- my $self = WebGUI::Auth->new($session,$authMethod,$userId,\@callable);
- bless $self, $class;
+ my $userId = $_[0];
+ my $self = $class->SUPER::new($session,$userId);
+ $self->setCallable([
+ 'validateEmail','createAccount','deactivateAccount','displayAccount',
+ 'displayLogin','login','logout','recoverPassword','resetExpiredPassword',
+ 'recoverPasswordFinish','createAccountSave','deactivateAccountConfirm',
+ 'resetExpiredPasswordSave','updateAccount', 'emailResetPassword',
+ 'emailResetPasswordFinish',
+ ]);
+ return $self;
}
#-------------------------------------------------------------------
@@ -1060,9 +1065,9 @@ sub profileRecoverPasswordFinish {
if ($self->_isValidPassword($password, $passwordConfirm)) {
$self->user( $user );
- $self->saveParams($userId, $self->authMethod,
- { identifier => $self->hashPassword($password),
- passwordLastUpdated => time });
+ $self->update(
+ identifier => $self->hashPassword($password),
+ passwordLastUpdated => time);
$self->_logSecurityMessage;
return $self->SUPER::login;
} else {
@@ -1110,10 +1115,10 @@ sub emailRecoverPasswordFinish {
return $self->recoverPassword( $i18n->get( 'no email address', 'AuthWebGUI' ) );
}
- my $authsettings = $self->getParams($userId);
+ my $authsettings = $self->get;
$authsettings->{emailRecoverPasswordVerificationNumber} = $recoveryGuid;
- $self->saveParams($userId, 'WebGUI', $authsettings);
+ $self->update($authsettings);
my $mail = WebGUI::Mail::Send->create($session, { to=>$email, subject=>$i18n->get('WebGUI password recovery')});
$mail->addText($i18n->get('recover password email text1', 'AuthWebGUI') . $url. ". \n\n".$i18n->get('recover password email text2', 'AuthWebGUI')." \n\n ".$url."?op=auth;method=emailResetPassword;token=$recoveryGuid"."\n\n ". $i18n->get('recover password email text3', 'AuthWebGUI'));
@@ -1211,13 +1216,13 @@ sub emailResetPasswordFinish {
if ($self->_isValidPassword($password, $passwordConfirm)) {
$self->user(WebGUI::User->new($self->session, $userId));
- $self->saveParams($userId, $self->authMethod,
- { identifier => $self->hashPassword($password),
- passwordLastUpdated => time });
+ $self->update(
+ identifier => $self->hashPassword($password),
+ passwordLastUpdated => time);
$self->_logSecurityMessage;
# delete the emailRecoverPasswordVerificationNumber
- $self->deleteSingleParam($userId, $self->authMethod, 'emailRecoverPasswordVerificationNumber');
+ $self->delete('emailRecoverPasswordVerificationNumber');
return $self->SUPER::login;
} else {
return $self->emailResetPassword($self->error);
@@ -1269,7 +1274,7 @@ sub resetExpiredPasswordSave {
$properties->{identifier} = $self->hashPassword($self->session->form->process("identifier"));
$properties->{passwordLastUpdated} =time();
- $self->saveParams($u->userId,$self->authMethod,$properties);
+ $self->update($properties);
$self->_logSecurityMessage();
return $self->SUPER::login();
}
@@ -1340,7 +1345,7 @@ sub updateAccount {
$u->username($username);
}
if($password){
- my $userData = $self->getParams;
+ my $userData = $self->get;
unless ($password eq "password") {
$properties->{identifier} = $self->hashPassword($password);
$self->_logSecurityMessage();
@@ -1350,7 +1355,7 @@ sub updateAccount {
}
}
}
- $self->saveParams($u->userId,$self->authMethod,$properties);
+ $self->update($properties);
$self->session->user(undef,undef,$u);
return $self->displayAccount($display);
diff --git a/lib/WebGUI/Operation/Auth.pm b/lib/WebGUI/Operation/Auth.pm
index 70ef13a93..4c3b818ec 100644
--- a/lib/WebGUI/Operation/Auth.pm
+++ b/lib/WebGUI/Operation/Auth.pm
@@ -45,7 +45,7 @@ sub getInstance {
my $userId = $_[1];
#Create Auth Object
- my $auth = eval { WebGUI::Pluggable::instanciate("WebGUI::Auth::".$authMethod, "new", [ $session, $authMethod, $userId ] ) };
+ my $auth = eval { WebGUI::Pluggable::instanciate("WebGUI::Auth::".$authMethod, "new", [ $session, $userId ] ) };
if ($@) {
$session->log->fatal($@);
}
diff --git a/lib/WebGUI/User.pm b/lib/WebGUI/User.pm
index 0f7f11b9c..949b12ee6 100644
--- a/lib/WebGUI/User.pm
+++ b/lib/WebGUI/User.pm
@@ -20,6 +20,7 @@ use WebGUI::Workflow::Instance;
use JSON ();
use WebGUI::Exception;
use WebGUI::ProfileField;
+use WebGUI::Inbox;
use Scalar::Util qw( weaken );
use Net::CIDR::Lite;
@@ -195,10 +196,14 @@ sub acceptsFriendsRequests {
=head2 authInstance
+NOTE: This method is deprecated. Users may have any number of auth methods.
+Instead, instantiate the desired auth method and give it the user's ID.
+
Returns an instance of the authentication object for this user.
=cut
+# DEPRECATED. Remove in 9.0
sub authInstance {
my $self = shift;
my $session = $self->session;
@@ -215,7 +220,7 @@ sub authInstance {
}
my $authClass = 'WebGUI::Auth::' . $authMethod;
WebGUI::Pluggable::load($authClass);
- my $auth = $authClass->new($session, $authMethod, $self->getId);
+ my $auth = $authClass->new($session, $self->getId);
return $auth;
}
@@ -380,8 +385,8 @@ sub delete {
$group->deleteUsers([$userId]) if $group;
}
- my $auth = $self->authInstance;
- $auth->deleteParams($userId);
+ # Delete all auth instances for this user
+ $db->write( "DELETE FROM authentication WHERE userId=?", [ $userId ] );
$self->friends->delete
if ($self->{_user}{"friendsGroup"} ne "");
diff --git a/t/Auth.t b/t/Auth.t
index 1b984ca4a..ec558bb51 100644
--- a/t/Auth.t
+++ b/t/Auth.t
@@ -24,7 +24,6 @@ use WebGUI::Session;
my $session = WebGUI::Test->session;
my @cleanupUsernames = (); # Will be cleaned up when we're done
-my $AUTH_METHOD = "TEST"; # Used as second argument to WebGUI::Auth->new
my $auth; # will be used to create auth instances
my ($request, $oldRequest, $output);
@@ -40,7 +39,7 @@ my $createAccountSession = WebGUI::Test->newSession(0, {
returnUrl => 'REDIRECT_URL',
});
-$auth = WebGUI::Auth->new( $createAccountSession, $AUTH_METHOD );
+$auth = WebGUI::Auth->new( $createAccountSession );
my $username = $createAccountSession->id->generate;
push @cleanupUsernames, $username;
$output = $auth->createAccountSave( $username, { }, "PASSWORD" );
@@ -77,7 +76,7 @@ my $loginSession = WebGUI::Test->newSession(0, {
returnUrl => 'REDIRECT_LOGIN_URL',
});
-$auth = WebGUI::Auth->new( $loginSession, $AUTH_METHOD, 3 );
+$auth = WebGUI::Auth->new( $loginSession, 3 );
my $username = $loginSession->id->generate;
push @cleanupUsernames, $username;
$session->setting->set('showMessageOnLogin', 0);
diff --git a/t/Auth/LDAP.t b/t/Auth/LDAP.t
index 095282a41..eb3460d95 100644
--- a/t/Auth/LDAP.t
+++ b/t/Auth/LDAP.t
@@ -55,11 +55,11 @@ $user->update({
username => "Andy Dufresne",
});
my $auth = $user->authInstance;
-$auth->saveParams( $user->getId, $user->get('authMethod'), {
+$auth->update(
ldapUrl => $ldapProps->{ldapUrl},
connectDN => "uid=Andy Dufresne,o=shawshank",
ldapConnection => $ldapProps->{ldapLinkId},
-} );
+);
$session->request->setup_body({
username => 'Andy Dufresne',
@@ -134,7 +134,7 @@ $auth = WebGUI::Auth::LDAP->new( $session, 'LDAP' );
$out = $auth->login;
is $session->user->get('username'), 'Brooks Hatley', 'Brooks was created';
cmp_deeply(
- $auth->getParams,
+ $auth->get,
{
connectDN => 'uid=Brooks Hatley,o=shawshank',
ldapConnection => '00000000000000testlink',
@@ -167,7 +167,7 @@ $auth = WebGUI::Auth::LDAP->new( $session, 'LDAP' );
$out = $auth->login;
is $session->user->get('username'), 'Brooks Hatley', 'Brooks was logged in after name change';
cmp_deeply(
- $auth->getParams,
+ $auth->get,
{
connectDN => 'uid=Brooks Hatlen,o=shawshank',
ldapConnection => '00000000000000testlink',
diff --git a/t/Auth/Twitter.t b/t/Auth/Twitter.t
index 9ed95e582..4062792aa 100644
--- a/t/Auth/Twitter.t
+++ b/t/Auth/Twitter.t
@@ -88,8 +88,9 @@ my $userId = $session->db->quickScalar(
"SELECT userId FROM authentication WHERE authMethod=? AND fieldName=? AND fieldData=?",
[ "Twitter", "twitterUserId", "2345" ],
);
-ok( $userId, 'user exists in authentication table' );
$user = WebGUI::User->new( $session, $userId );
+note( $userId );
+isnt( $user->userId, 1, 'user exists in authentication table' );
is( $user->username, "RedHerring", "correct username is set" );
WebGUI::Test->addToCleanup( $user );
diff --git a/t/Auth/mech.t b/t/Auth/mech.t
index f0398913e..f03ab0da2 100644
--- a/t/Auth/mech.t
+++ b/t/Auth/mech.t
@@ -47,9 +47,9 @@ WebGUI::Test->addToCleanup($user);
$user->username( $USERNAME );
$user->addToGroups( ['3'] );
my $auth = WebGUI::Operation::Auth::getInstance( $session, $user->authMethod, $user->userId );
-$auth->saveParams( $user->userId, $user->authMethod, {
+$auth->update(
'identifier' => $auth->hashPassword($IDENTIFIER)
-});
+);
my ($redirect, $response, $url);
@@ -115,8 +115,6 @@ $mech->get_ok( $assetUrl . "?op=auth;method=displayLogin" );
$mech->submit_form_ok(
{
with_fields => {
- op => 'auth',
- method => 'login',
username => $USERNAME,
identifier => $IDENTIFIER,
},