LP#926307: MARC Federated Search does not support authenticated Z39.50 servers user/mcooper/lp926307_acq_zserarch_with_auth
authorMark Cooper <markchristophercooper@gmail.com>
Thu, 25 Oct 2012 05:51:53 +0000 (22:51 -0700)
committerMark Cooper <markchristophercooper@gmail.com>
Thu, 25 Oct 2012 05:51:53 +0000 (22:51 -0700)
Added lookup of z3950 server credentials so that username and password
are set if found.

Signed-off-by: Mark Cooper <markchristophercooper@gmail.com>
Open-ILS/src/templates/acq/picklist/bib_search.tt2
Open-ILS/web/js/ui/default/acq/picklist/bib_search.js

index dd7e83c..e159bf0 100644 (file)
@@ -5,6 +5,11 @@
 
 <script type="text/javascript">
     var searchOffset = 0;
+    // need these to access z3950_store for credentials 
+    MODE_RDONLY = 0x01; // c.f constants.js
+    var script = document.createElement('script');
+    script.src = "/xul/server/main/JSAN.js";
+    document.getElementsByTagName('head')[0].appendChild(script);
 </script>
 
 <div id='oils-acq-search-block' class='container'>
index 4345728..013eb7c 100644 (file)
@@ -88,6 +88,8 @@ function doSearch(values) {
     liTable.reset();
     showDiv('oils-acq-pl-loading');
 
+    var z_creds = loadZCreds();
+
     search = {
         service : [],
         username : [],
@@ -102,8 +104,17 @@ function doSearch(values) {
     var selected = bibSourceSelect.getValue();
     for(var i = 0; i < selected.length; i++) {
         search.service.push(selected[i]);
-        search.username.push('');
-        search.password.push('');
+        var usrname = ''; var passwd = '';
+        if(z_creds) {
+            for(var host in z_creds.hosts) {
+                if(z_creds.hosts[host].services[selected[i]]) {
+                    usrname = z_creds.hosts[host].services[selected[i]].username;
+                    passwd  = z_creds.hosts[host].services[selected[i]].password;
+                }
+            }
+        }
+        search.username.push(usrname);
+        search.password.push(passwd);
         sourceCount++;
     }
 
@@ -149,6 +160,19 @@ function showDiv(div) {
     dojo.style(div, 'display', 'block');
 }
 
+function loadZCreds() {
+    if (typeof JSAN == 'undefined') return false;
+    JSAN.errorLevel = "die";
+    JSAN.addRepository('/xul/server/');
+    JSAN.use('util.file');
+    var creds;
+    var file = new util.file('z3950_store');
+    if (file._file.exists()) {
+        creds = file.get_object();
+        file.close();
+    }
+    return creds;
+}
 
 openils.Util.addOnLoad(drawForm);