Bug 21046: Return the correct borrowernumber when there is empty cardnumber(s)
authorAlex Arnaud <alex.arnaud@biblibre.com>
Fri, 6 Jul 2018 13:40:53 +0000 (13:40 +0000)
committerNick Clemens <nick@bywatersolutions.com>
Thu, 12 Jul 2018 12:16:27 +0000 (12:16 +0000)
Test plan:
  - Use a patron with an empty cardnumber to authenticate with ILSDI
    AuthenticatePatron
    (cgi-bin/koha/ilsdi.pl?service=AuthenticatePatron&username=userid&password=pass),
  - make sure you have other patron(s) with empty cardnumber and there
    borrowernumber is
    smaller than the one you authenticate with,
  - you should get a wrong borrowernumber,
  - apply this patch,
  - test again, you should get the right one

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>

C4/ILSDI/Services.pm
t/db_dependent/ILSDI_Services.t

index 158ff8e..5534d3c 100644 (file)
@@ -357,7 +357,7 @@ sub AuthenticatePatron {
     my ($status, $cardnumber, $userid) = C4::Auth::checkpw( C4::Context->dbh, $username, $password );
     if ( $status ) {
         # Get the borrower
-        my $patron = Koha::Patrons->find( { cardnumber => $cardnumber } );
+        my $patron = Koha::Patrons->find( { userid => $userid } );
         return { id => $patron->borrowernumber };
     }
     else {
index d918e43..1eca594 100644 (file)
@@ -42,9 +42,17 @@ subtest 'AuthenticatePatron test' => sub {
 
     my $plain_password = 'tomasito';
 
+    $builder->build({
+        source => 'Borrower',
+        value => {
+            cardnumber => undef,
+        }
+    });
+
     my $borrower = $builder->build({
         source => 'Borrower',
         value  => {
+            cardnumber => undef,
             password => Koha::AuthUtils::hash_password( $plain_password )
         }
     });