From f3868bf6fe28d681f0d30a3d6af9275024175428 Mon Sep 17 00:00:00 2001 From: Henri-Damien LAURENT Date: Tue, 29 Sep 2009 12:37:31 +0200 Subject: [PATCH] Adding Extended Attributes management to Auth_with_LDAP --- C4/Auth_with_ldap.pm | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/C4/Auth_with_ldap.pm b/C4/Auth_with_ldap.pm index 08a4353025..3bb850b02a 100644 --- a/C4/Auth_with_ldap.pm +++ b/C4/Auth_with_ldap.pm @@ -24,7 +24,10 @@ use Digest::MD5 qw(md5_base64); use C4::Debug; use C4::Context; use C4::Members qw(AddMember changepassword); +use C4::Members::Attributes; +use C4::Members::AttributeTypes; use C4::Utils qw( :all ); +use List::MoreUtils qw( any ); use Net::LDAP; use Net::LDAP::Filter; @@ -150,10 +153,29 @@ sub checkpw_ldap { } } elsif ($config{replicate}) { # A2, C2 $borrowernumber = AddMember(%borrower) or die "AddMember failed"; - } else { + } else { return 0; # B2, D2 } - return(1, $cardnumber); + if (C4::Context->preference('ExtendedPatronAttributes') && $borrowernumber && ($config{update} ||$config{replicate})) { + 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 @errors; + #Check before add + for (my $i; $i< scalar(@$extended_patron_attributes)-1;$i++) { + my $attr=$extended_patron_attributes->[$i]; + unless (C4::Members::Attributes::CheckUniqueness($attr->{code}, $attr->{value}, $borrowernumber)) { + unshift @errors, $i; + warn "ERROR_extended_unique_id_failed $attr->{code} $attr->{value}"; + } + } + #Removing erroneous attributes + foreach my $index (@errors){ + @$extended_patron_attributes=splice(@$extended_patron_attributes,$index,1); + } + C4::Members::Attributes::SetBorrowerAttributes($borrowernumber, $extended_patron_attributes); + } +return(1, $cardnumber); } # Pass LDAP entry object and local cardnumber (userid). -- 2.20.1