Bug 18755: Allow empty passwords in Patron Info to return OK
authorColin Campbell <colin.campbell@ptfs-europe.com>
Thu, 8 Jun 2017 11:59:55 +0000 (12:59 +0100)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Thu, 6 Jul 2017 17:29:04 +0000 (14:29 -0300)
With this patch a parameter 'allow_empty_passwords="1" can be added to a
login in the SIP configuration file to allow the behaviour as was normal
before the patch for bug 16610 was applied. Some sip clients rely on
this behaviour sending an empty password field when they wish to
validate to user but do not have the password.
If a password is supplied it will be validated

A test has been added to Message.t to confirm this behaviour

Signed-off-by: Mark Tompsett <mtompset@hotmail.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

C4/SIP/Sip/MsgType.pm
t/db_dependent/SIP/Message.t

index 7a1a1e3..ede80c3 100644 (file)
@@ -961,6 +961,9 @@ sub handle_patron_info {
 
             # If patron password was provided, report whether it was right or not.
             $password_rc = $patron->check_password($patron_pwd);
+            if ( $patron_pwd eq q{} && $server->{account}->{allow_empty_passwords} ) {
+                $password_rc = 1;
+            }
             $resp .= add_field( FID_VALID_PATRON_PWD, sipbool( $password_rc ) );
         }
 
index 088829a..217f328 100755 (executable)
@@ -70,7 +70,7 @@ subtest 'Testing Patron Status Request V2' => sub {
 
 subtest 'Testing Patron Info Request V2' => sub {
     $schema->storage->txn_begin;
-    plan tests => 16;
+    plan tests => 17;
     $C4::SIP::Sip::protocol_version = 2;
     test_request_patron_info_v2();
     $schema->storage->txn_rollback;
@@ -196,6 +196,13 @@ sub test_request_patron_info_v2 {
     $msg->handle_patron_info( $server );
     $respcode = substr( $response, 0, 2 );
     check_field( $respcode, $response, FID_VALID_PATRON_PWD, 'N', 'code CQ should be N for empty AD' );
+    # Test empty password is OK if account configured to allow
+    $server->{account}->{allow_empty_passwords} = 1;
+    $msg = C4::SIP::Sip::MsgType->new( $siprequest, 0 );
+    undef $response;
+    $msg->handle_patron_info( $server );
+    $respcode = substr( $response, 0, 2 );
+    check_field( $respcode, $response, FID_VALID_PATRON_PWD, 'Y', 'code CQ should be Y if empty AD allowed' );
 
     # Finally, we send a wrong card number
     $schema->resultset('Borrower')->search({ cardnumber => $card })->delete;