View | Details | Raw Unified | Return to bug 13871
Collapse All | Expand All

(-)a/C4/SIP/Sip/MsgType.pm (-8 / +27 lines)
Lines 429-442 sub handle { Link Here
429
# ASSUMPTION: If the patron password field is present in the
429
# ASSUMPTION: If the patron password field is present in the
430
# message, then it must match, otherwise incomplete patron status
430
# message, then it must match, otherwise incomplete patron status
431
# information will be returned to the terminal.
431
# information will be returned to the terminal.
432
# 
432
#
433
sub build_patron_status {
433
sub build_patron_status {
434
    my ( $patron, $lang, $fields, $server ) = @_;
434
    my ( $patron, $lang, $fields, $server ) = @_;
435
435
    my $overdrive_mode = $server->{account}->{'overdrive-mode'};
436
    my $patron_pwd = $fields->{ (FID_PATRON_PWD) };
436
    my $patron_pwd = $fields->{ (FID_PATRON_PWD) };
437
    my $resp = (PATRON_STATUS_RESP);
437
    my $resp = (PATRON_STATUS_RESP);
438
    my $password_ok = 1;
439
    my $password_rc;
438
440
439
    if ($patron) {
441
    if ($patron) {
442
        if ($patron_pwd) {
443
            $password_rc = $patron->check_password($patron_pwd);
444
            $password_ok = 0 unless $password_rc;
445
        }
446
        elsif ( $overdrive_mode
447
            and not exists $fields->{'AL'} # not block_request
448
            and not $patron_pwd ) # no password supplied
449
        {
450
            $password_ok = 0;
451
        }
452
    }
453
454
    if ( $patron and $password_ok ) {
440
        $resp .= patron_status_string($patron);
455
        $resp .= patron_status_string($patron);
441
        $resp .= $lang . Sip::timestamp();
456
        $resp .= $lang . Sip::timestamp();
442
        $resp .= add_field( FID_PERSONAL_NAME, $patron->name );
457
        $resp .= add_field( FID_PERSONAL_NAME, $patron->name );
Lines 444-456 sub build_patron_status { Link Here
444
        # while the patron ID we got from the SC is valid, let's
459
        # while the patron ID we got from the SC is valid, let's
445
        # use the one returned from the ILS, just in case...
460
        # use the one returned from the ILS, just in case...
446
        $resp .= add_field( FID_PATRON_ID, $patron->id );
461
        $resp .= add_field( FID_PATRON_ID, $patron->id );
462
447
        if ( $protocol_version >= 2 ) {
463
        if ( $protocol_version >= 2 ) {
448
            $resp .= add_field( FID_VALID_PATRON, 'Y' );
464
            $resp .= add_field( FID_VALID_PATRON, 'Y' );
449
465
450
            # Patron password is a required field.
466
            # Patron password is a required field.
451
            $resp .=
467
            $resp .= add_field( FID_VALID_PATRON_PWD, sipbool($password_rc) );
452
              add_field( FID_VALID_PATRON_PWD,
453
                sipbool( $patron->check_password($patron_pwd) ) );
454
            $resp .= maybe_add( FID_CURRENCY, $patron->currency );
468
            $resp .= maybe_add( FID_CURRENCY, $patron->currency );
455
            $resp .= maybe_add( FID_FEE_AMT,  $patron->fee_amount );
469
            $resp .= maybe_add( FID_FEE_AMT,  $patron->fee_amount );
456
        }
470
        }
Lines 458-468 sub build_patron_status { Link Here
458
        $resp .= maybe_add( FID_SCREEN_MSG, $patron->screen_msg );
472
        $resp .= maybe_add( FID_SCREEN_MSG, $patron->screen_msg );
459
        $resp .= maybe_add( FID_SCREEN_MSG, $patron->{branchcode} )
473
        $resp .= maybe_add( FID_SCREEN_MSG, $patron->{branchcode} )
460
          if ( $server->{account}->{send_patron_home_library_in_af} );
474
          if ( $server->{account}->{send_patron_home_library_in_af} );
461
462
        $resp .= maybe_add( FID_PRINT_LINE, $patron->print_line );
475
        $resp .= maybe_add( FID_PRINT_LINE, $patron->print_line );
476
463
    }
477
    }
464
    else {
478
    else {
465
        # Invalid patron id.  Report that the user has no privs.,
479
480
        # Invalid patron id (and/or passwd for overdrive_mode)
481
        # Report that the user has no privs.
482
466
        # no personal name, and is invalid (if we're using 2.00)
483
        # no personal name, and is invalid (if we're using 2.00)
467
        $resp .= 'YYYY' . ( ' ' x 10 ) . $lang . Sip::timestamp();
484
        $resp .= 'YYYY' . ( ' ' x 10 ) . $lang . Sip::timestamp();
468
        $resp .= add_field( FID_PERSONAL_NAME, '' );
485
        $resp .= add_field( FID_PERSONAL_NAME, '' );
Lines 473-478 sub build_patron_status { Link Here
473
490
474
        ( $protocol_version >= 2 )
491
        ( $protocol_version >= 2 )
475
          and $resp .= add_field( FID_VALID_PATRON, 'N' );
492
          and $resp .= add_field( FID_VALID_PATRON, 'N' );
493
494
        $resp .=
495
          maybe_add( FID_SCREEN_MSG, 'Invalid patron or patron password' );
476
    }
496
    }
477
497
478
    $resp .= add_field( FID_INST_ID, $fields->{ (FID_INST_ID) } );
498
    $resp .= add_field( FID_INST_ID, $fields->{ (FID_INST_ID) } );
479
- 

Return to bug 13871