LP1579144: Let admin decide on the precedence of the location codes per institution
authorMike Rylander <mrylander@gmail.com>
Tue, 13 Sep 2016 20:37:22 +0000 (16:37 -0400)
committerMike Rylander <mrylander@gmail.com>
Fri, 16 Sep 2016 16:13:26 +0000 (12:13 -0400)
Signed-off-by: Mike Rylander <mrylander@gmail.com>
SIPconfig.xml
Sip/MsgType.pm

index 6ba05a2..180f4d4 100644 (file)
@@ -1,7 +1,7 @@
 <!--
 #
 # Copyright (C) 2006-2008  Georgia Public Library Service
-# Copyright (C) 2013 Equinox Software, Inc.
+# Copyright (C) 2013,2016 Equinox Software, Inc.
 # 
 # Author: David J. Fiander
 # Author: Mike Rylander
@@ -52,7 +52,7 @@
       timeout="60" />
   </listeners>
 
-  <!-- One or more Memecache servers are required for Mulitplex mode. -->
+  <!-- One or more Memecache servers are required for Multiplex mode. -->
   <!-- Cache server(s) are ignored in non-Multiplex mode -->
   <cache>
     <server>127.0.0.1:11211</server>
@@ -64,7 +64,7 @@
       <login id="scclient-2" password="clientpwd-2"
              institution="UWOLS" />
       <login id="lpl-sc" password="1234" institution="LPL" />
-      <login id="lpl-sc-beacock" password="xyzzy"
+      <login id="lpl-sc-beacock" password="xyzzy" location_code="WORKSTATION5"
              delimiter="|" error-detect="enabled" institution="LPL" />
   </accounts>
 
@@ -77,7 +77,7 @@
     <institution id="UWOLS" implementation="ILS" parms="">
           <policy checkin="true" renewal="false"
                  status_update="false" offline="false"
-                 timeout="600"
+                 timeout="600" client_location_code="true"
                  retries="3" />
           <relais_extensions_to_msg24 enabled="false" />
     </institution>
index 0f51459..29751f8 100644 (file)
@@ -856,7 +856,18 @@ sub handle_login {
         syslog("LOG_WARNING", "MsgType::handle_login: Invalid password for login '$uid'");
         $status = 0;
     } else {
-        $sc_loc ||= $server->{config}->{accounts}->{$uid}->{location_code};
+        if (to_bool(
+                $server
+                    ->{config}
+                    ->{institutions}
+                    ->{ $server->{config}->{accounts}->{$uid}->{institution} }
+                    ->{policy}
+                    ->{client_location_code}
+        )) {
+            $sc_loc ||= $server->{config}->{accounts}->{$uid}->{location_code};
+        } else {
+            $sc_loc = $server->{config}->{accounts}->{$uid}->{location_code} || $sc_loc;
+        }
         _load_ils_handler($server, $uid, $sc_loc);
     }