Merge branch 'browser'
authorphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 7 Jul 2010 18:44:13 +0000 (18:44 +0000)
committerphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 7 Jul 2010 18:44:13 +0000 (18:44 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@16871 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/examples/remoteauth.cgi [new file with mode: 0755]

diff --git a/Open-ILS/examples/remoteauth.cgi b/Open-ILS/examples/remoteauth.cgi
new file mode 100755 (executable)
index 0000000..4529b7c
--- /dev/null
@@ -0,0 +1,54 @@
+#!/usr/bin/perl
+#use strict;
+use warnings;
+
+use CGI;
+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 $p = $cgi->param('passwd');
+
+print $cgi->header(-type=>'text/html', -expires=>'-1d');
+
+OpenSRF::System->bootstrap_client( config_file => $bootstrap );
+
+if (!$u || !$p) {
+       print "+INCOMPLETE";
+} else {
+       my $nametype = 'username';
+       $nametype = 'barcode' if ($u =~ /^\d+$/o);
+       my $seed = OpenSRF::AppSession
+               ->create("open-ils.auth")
+               ->request( 'open-ils.auth.authenticate.init', $u )
+               ->gather(1);
+       if ($seed) {
+               my $response = OpenSRF::AppSession
+                       ->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} )
+                               ->gather(1);
+                       if (ref($user) eq 'HASH' && $user->{ilsevent} == 1001) {
+                               print "+NO";
+                       } else {
+                               print "+VALID";
+                       }
+               } else {
+                       print "+NO";
+               }
+       } else {
+               print "+BACKEND_ERROR";
+       }
+
+}
+
+1;