Bug 25109: (QA follow-up) Fix typo in configuration entry name
[srvgit] / C4 / Auth_with_ldap.pm
index 589dbcc..36b9071 100644 (file)
@@ -17,14 +17,11 @@ package C4::Auth_with_ldap;
 # You should have received a copy of the GNU General Public License
 # along with Koha; if not, see <http://www.gnu.org/licenses>.
 
-use strict;
-#use warnings; FIXME - Bug 2505
+use Modern::Perl;
 use Carp;
 
 use C4::Debug;
 use C4::Context;
-use C4::Members::Attributes;
-use C4::Members::AttributeTypes;
 use C4::Members::Messaging;
 use C4::Auth qw(checkpw_internal);
 use Koha::Patrons;
@@ -224,7 +221,7 @@ sub checkpw_ldap {
         my @columns = Koha::Patrons->columns;
         my $patron = Koha::Patron->new(
             {
-                map { defined( $borrower{$_} ) ? ( $_ => $borrower{$_} ) : () } @columns
+                map { exists( $borrower{$_} ) ? ( $_ => $borrower{$_} ) : () } @columns
             }
         )->store;
         die "Insert of new patron failed" unless $patron;
@@ -234,15 +231,22 @@ sub checkpw_ldap {
         return 0;   # B2, D2
     }
     if (C4::Context->preference('ExtendedPatronAttributes') && $borrowernumber && ($config{update} ||$config{replicate})) {
-        foreach my $attribute_type ( C4::Members::AttributeTypes::GetAttributeTypes() ) {
-            my $code = $attribute_type->{code};
+        my $library_id = C4::Context->userenv ? C4::Context->userenv->{'branch'} : undef;
+        my $attribute_types = Koha::Patron::Attribute::Types->search_with_library_limits({}, {}, $library_id);
+        while ( my $attribute_type = $attribute_types->next ) {
+            my $code = $attribute_type->code;
             unless (exists($borrower{$code}) && $borrower{$code} !~ m/^\s*$/ ) {
                 next;
             }
-            if (C4::Members::Attributes::CheckUniqueness($code, $borrower{$code}, $borrowernumber)) {
-                C4::Members::Attributes::UpdateBorrowerAttribute($borrowernumber, {code => $code, attribute => $borrower{$code}});
-            } else {
-                warn "ERROR_extended_unique_id_failed $code $borrower{$code}";
+            my $patron = Koha::Patrons->find($borrowernumber);
+            if ( $patron ) { # Should not be needed, but we are in C4::Auth LDAP...
+                eval {
+                    my $attribute = Koha::Patron::Attribute->new({code => $code, attribute => $borrower{$code}});
+                    $patron->extended_attributes([$attribute->unblessed]);
+                };
+                if ($@) { # FIXME Test if Koha::Exceptions::Patron::Attribute::NonRepeatable
+                    warn "ERROR_extended_unique_id_failed $code $borrower{$code}";
+                }
             }
         }
     }
@@ -275,9 +279,9 @@ sub ldap_entry_2_hash {
                my  $data = $memberhash{ lc($mapping{$key}->{is}) }; # Net::LDAP returns all names in lowercase
                $debug and printf STDERR "mapping %20s ==> %-20s (%s)\n", $key, $mapping{$key}->{is}, $data;
                unless (defined $data) { 
-                       $data = $mapping{$key}->{content} || '';        # default or failsafe ''
+            $data = $mapping{$key}->{content} || undef;
                }
-               $borrower{$key} = ($data ne '') ? $data : ' ' ;
+        $borrower{$key} = $data;
        }
        $borrower{initials} = $memberhash{initials} || 
                ( substr($borrower{'firstname'},0,1)
@@ -371,8 +375,10 @@ sub update_local {
     # skip extended patron attributes in 'borrowers' attribute update
     my @keys = keys %$borrower;
     if (C4::Context->preference('ExtendedPatronAttributes')) {
-        foreach my $attribute_type ( C4::Members::AttributeTypes::GetAttributeTypes() ) {
-           my $code = $attribute_type->{code};
+        my $library_id = C4::Context->userenv ? C4::Context->userenv->{'branch'} : undef;
+        my $attribute_types = Koha::Patron::Attribute::Types->search_with_library_limits({}, {}, $library_id);
+        while ( my $attribute_type = $attribute_types->next ) {
+           my $code = $attribute_type->code;
            @keys = grep { $_ ne $code } @keys;
            $debug and printf STDERR "ignoring extended patron attribute '%s' in update_local()\n", $code;
         }
@@ -393,7 +399,7 @@ sub update_local {
     );
 
     # MODIFY PASSWORD/LOGIN if password was mapped
-    _do_changepassword($userid, $borrowerid, $password) if $borrower->{'password'};
+    _do_changepassword($userid, $borrowerid, $password) if exists( $borrower->{'password'} );
 }
 
 1;
@@ -468,7 +474,6 @@ C4::Auth - Authenticates Koha users
                | contactname         | mediumtext   | YES  |     | NULL    |                |
                | contactfirstname    | text         | YES  |     | NULL    |                |
                | contacttitle        | text         | YES  |     | NULL    |                |
-               | guarantorid         | int(11)      | YES  | MUL | NULL    |                |
                | borrowernotes       | mediumtext   | YES  |     | NULL    |                |
                | relationship        | varchar(100) | YES  |     | NULL    |                |
                | ethnicity           | varchar(50)  | YES  |     | NULL    |                |