From f7b997746f2afde30a2869959d53d85804881a54 Mon Sep 17 00:00:00 2001 From: phasefx Date: Fri, 1 Oct 2010 12:19:11 +0000 Subject: [PATCH] tweak remoteauth.cgi to offer usrname and barcode params in addition to user. user param now looks for the opac.barcode_regex org unit setting to determine whether the value is a usrname or barcode. change double-quotes to single-quotes if we're not doing string interpolation. change apache instructions for configuration git-svn-id: svn://svn.open-ils.org/ILS/trunk@18116 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/examples/remoteauth.cgi | 47 +++++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/Open-ILS/examples/remoteauth.cgi b/Open-ILS/examples/remoteauth.cgi index c50725dd0f..a1e60ff571 100755 --- a/Open-ILS/examples/remoteauth.cgi +++ b/Open-ILS/examples/remoteauth.cgi @@ -3,7 +3,8 @@ # This CGI script might be useful for providing an easy way for EZproxy to authenticate # users against an Evergreen instance. # -# For example, if you modify your eg_vhost.conf by adding this: +# For example, if you modify your eg.conf by adding this: +# Alias "/cgi-bin/ezproxy/" "/openils/var/cgi-bin/ezproxy/" # # AddHandler cgi-script .pl # AllowOverride None @@ -29,47 +30,63 @@ use Digest::MD5 qw(md5_hex); use OpenSRF::EX qw(:try); use OpenSRF::System; - my $bootstrap = '/openils/conf/opensrf_core.xml'; my $cgi = new CGI; my $u = $cgi->param('user'); +my $usrname = $cgi->param('usrname'); +my $barcode = $cgi->param('barcode'); my $p = $cgi->param('passwd'); print $cgi->header(-type=>'text/html', -expires=>'-1d'); OpenSRF::System->bootstrap_client( config_file => $bootstrap ); -if (!$u || !$p) { - print "+INCOMPLETE"; +if (!($u || $usrname || $barcode) || !$p) { + print '+INCOMPLETE'; } else { - my $nametype = 'username'; - $nametype = 'barcode' if ($u =~ /^\d+$/o); + my $nametype; + if ($usrname) { + $u = $usrname; + $nametype = 'username'; + } elsif ($barcode) { + $u = $barcode; + $nametype = 'barcode'; + } else { + $nametype = 'username'; + my $regex_response = OpenSRF::AppSession + ->create('open-ils.actor') + ->request('open-ils.actor.ou_setting.ancestor_default', 1, 'opac.barcode_regex') + ->gather(1); + if ($regex_response) { + my $regexp = $regex_response->{'value'}; + $nametype = 'barcode' if ($u =~ qr/$regexp/); + } + } my $seed = OpenSRF::AppSession - ->create("open-ils.auth") + ->create('open-ils.auth') ->request( 'open-ils.auth.authenticate.init', $u ) ->gather(1); if ($seed) { my $response = OpenSRF::AppSession - ->create("open-ils.auth") + ->create('open-ils.auth') ->request( 'open-ils.auth.authenticate.complete', { $nametype => $u, password => md5_hex($seed . md5_hex($p)), type => 'temp' }) ->gather(1); if ($response->{payload}->{authtoken}) { my $user = OpenSRF::AppSession - ->create("open-ils.auth") - ->request( "open-ils.auth.session.retrieve", $response->{payload}->{authtoken} ) + ->create('open-ils.auth') + ->request( 'open-ils.auth.session.retrieve', $response->{payload}->{authtoken} ) ->gather(1); if (ref($user) eq 'HASH' && $user->{ilsevent} == 1001) { - print "+NO"; + print '+NO'; } else { - print "+VALID"; + print '+VALID'; } } else { - print "+NO"; + print '+NO'; } } else { - print "+BACKEND_ERROR"; + print '+BACKEND_ERROR'; } - } 1; -- 2.11.0