LP#1339190: Have Evergreen save authtoken state to support IO::Multiplex mode
authorMike Rylander <mrylander@gmail.com>
Wed, 9 Oct 2013 15:36:52 +0000 (11:36 -0400)
committerMike Rylander <mrylander@gmail.com>
Thu, 7 Aug 2014 15:53:16 +0000 (11:53 -0400)
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Open-ILS/src/perlmods/lib/OpenILS/SIP.pm

index 8098d84..664bb62 100644 (file)
@@ -47,7 +47,7 @@ sub disconnect {
 }
 
 sub new {
-    my ($class, $institution, $login) = @_;
+    my ($class, $institution, $login, $state) = @_;
     my $type = ref($class) || $class;
     my $self = {};
 
@@ -76,7 +76,7 @@ sub new {
     bless( $self, $type );
 
     return undef unless 
-        $self->login( $login->{id}, $login->{password} );
+        $self->login( $login->{id}, $login->{password}, $state );
 
     return $self;
 }
@@ -224,9 +224,15 @@ sub format_date {
 
 
 sub login {
-    my( $self, $username, $password ) = @_;
+    my( $self, $username, $password, $state ) = @_;
     syslog('LOG_DEBUG', "OILS: Logging in with username $username");
 
+
+    if ($state and ref $state and $$state{authtoken}) {
+        $self->{authtoken} = $$state{authtoken};
+        return $self->{authtoken} if ($self->fetch_session); # fetch the session
+    }
+
     my $nonce = rand($$);
     my $seed = $U->simplereq( 
         'open-ils.auth',
@@ -259,6 +265,11 @@ sub login {
     return $key;
 }
 
+sub state {
+    my $self = shift;
+    return { authtoken => $self->{authtoken} };
+}
+
 #
 # find_patron($barcode);
 # find_patron(barcode => $barcode);   # same as above