[Koha-patches] [PATCH] bug 4256: fix patron replication when using LDAP with auth_by_bind

Galen Charlton gmcharlt at gmail.com
Fri Apr 30 15:08:25 CEST 2010


Patch compiled from diffs created by Dobrica Pavlinušić <dpavlin at rot13.org> to:

* enable patron replication when using LDAP with auth_by_bind
* not scribble over extended patron attributes
* fix failure logging in to OPAC if patron has no extended attributes

Signed-off-by: Galen Charlton <gmcharlt at gmail.com>
---
 C4/Auth_with_ldap.pm |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/C4/Auth_with_ldap.pm b/C4/Auth_with_ldap.pm
index 78666e9..b25697c 100644
--- a/C4/Auth_with_ldap.pm
+++ b/C4/Auth_with_ldap.pm
@@ -58,7 +58,7 @@ my $prefhost  = $ldap->{hostname}	or die ldapserver_error('hostname');
 my $base      = $ldap->{base}		or die ldapserver_error('base');
 $ldapname     = $ldap->{user}		;
 $ldappassword = $ldap->{pass}		;
-our %mapping  = %{$ldap->{mapping}} || (); #	or die ldapserver_error('mapping');
+our %mapping  = %{$ldap->{mapping}}; # FIXME dpavlin -- don't die because of || (); from 6eaf8511c70eb82d797c941ef528f4310a15e9f9
 my @mapkeys = keys %mapping;
 $debug and print STDERR "Got ", scalar(@mapkeys), " ldap mapkeys (  total  ): ", join ' ', @mapkeys, "\n";
 @mapkeys = grep {defined $mapping{$_}->{is}} @mapkeys;
@@ -122,6 +122,11 @@ sub checkpw_ldap {
             $debug and warn "LDAP bind failed as kohauser $principal_name: ". description($res);
             return 0;
         }
+
+	# FIXME dpavlin -- we really need $userldapentry leater on even if using auth_by_bind!
+	my $search = search_method($db, $userid) or return 0;   # warnings are in the sub
+	$userldapentry = $search->shift_entry;
+
 	} else {
         my $search = search_method($db, $userid) or return 0;   # warnings are in the sub
         $userldapentry = $search->shift_entry;
@@ -150,6 +155,7 @@ sub checkpw_ldap {
             ($cardnumber eq $c2) or warn "update_local returned cardnumber '$c2' instead of '$cardnumber'";
         } else { # C1, D1
             # maybe update just the password?
+		return(1, $cardnumber); # FIXME dpavlin -- don't destroy ExtendedPatronAttributes
         }
     } elsif ($config{replicate}) { # A2, C2
         $borrowernumber = AddMember(%borrower) or die "AddMember failed";
@@ -160,6 +166,7 @@ sub checkpw_ldap {
    		my @types = C4::Members::AttributeTypes::GetAttributeTypes();
 		my @attributes = grep{my $key=$_; any{$_ eq $key}@types;} keys %borrower;
 		my $extended_patron_attributes = map{{code=>$_,value=>$borrower{$_}}}@attributes;
+		my $extended_patron_attributes = [] unless $extended_patron_attributes;
 		my @errors;
 		#Check before add
 		for (my $i; $i< scalar(@$extended_patron_attributes)-1;$i++) {
-- 
1.7.0




More information about the Koha-patches mailing list