LP 1833284: Option to send database id in LookupUser response
authorJason Stephenson <jason@sigio.com>
Thu, 6 Dec 2018 18:29:29 +0000 (13:29 -0500)
committerJason Stephenson <jason@sigio.com>
Thu, 9 Apr 2020 12:38:49 +0000 (08:38 -0400)
Autographics can track users who change barcodes or have more than one
barcode by using the user's unique ID.  To implement this feature, we
have added an option to return the user's unique database id instead
of the barcode in the LookupUser response message.  Autographics will
use the database id to track the user on their side, and use the
barcode that the patron entered in all other requests.

The new option is lookupuser_send_database_id and can be activated in
the patrons element of oils_ncip.xml.  See the updated example for
documentation comments.

Signed-off-by: Jason Stephenson <jason@sigio.com>
examples/oils_ncip.xml.example
lib/NCIP/ILS/Evergreen.pm

index 95b240d..abe3c2e 100644 (file)
         configuration load times and still have the group name as a
         reminder to the person that edits the configuration.
     -->
+    <!--
+      Uncomment the below to return the patron's database id in
+      LookupUser responses, instead of the barcode.  This is an
+      Autographics extension.
+    -->
+    <!-- <lookupuser_send_database_id/> -->
   </patrons>
   <holds>
     <!--
index 3fc3ff1..e0f3cc4 100644 (file)
@@ -164,9 +164,12 @@ sub lookupuser {
     my $userdata = NCIP::User->new();
 
     # Use the user's main card as the UserId.
+    my $idType = ($self->{lookupuser_send_database_id}) ? 'UniqueID' : 'Barcode';
+    my $idValue = ($self->{lookupuser_send_database_id}) ? $user->id()
+        : $user->card->barcode() || $barcode;
     my $id = NCIP::User::Id->new({
-        UserIdentifierType => 'Barcode',
-        UserIdentifierValue => $user->card->barcode() || $barcode
+        UserIdentifierType => $idType,
+        UserIdentifierValue => $idValue
     });
     $userdata->UserId($id);
 
@@ -2917,6 +2920,11 @@ sub _init {
             }
             push(@{$self->{blocked_profiles}}, $pgt) if ($pgt);
         }
+        if ($self->{config}->{patrons}->{lookupuser_send_database_id}) {
+            $self->{lookupuser_send_database_id} = 1;
+        } else {
+            $self->{lookupuser_send_database_id} = 0;
+        }
     }
 
     # Load the bib source if we're not using precats.