update userid with login from SAML for cardnumber == userid
authorDobrica Pavlinusic <dpavlin@rot13.org>
Wed, 12 Oct 2011 13:57:06 +0000 (15:57 +0200)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Wed, 12 Oct 2011 13:57:09 +0000 (15:57 +0200)
This is only case for old users which didn't get correct userid assigned
during migration. Hopefully this code will fix all problems like this
one over time as users login for the first time.

C4/Auth.pm

index 937925c..28f5c15 100644 (file)
@@ -657,11 +657,17 @@ sub checkauth {
                                $saml->{ATTR_code} =~ m/^\w\w\d+/ ? 'D' :
                                'O';
 
+                       my $cardnumber =  $categorycode . $saml->{ATTR_code};
+
                        if ( my $borrowernumber = getborrowernumber($saml->{ATTR_nick}) ) {
-                               warn "SAML login OK $borrowernumber";
+                               warn "SAML login OK $borrowernumber using ATTR_nick: ", $saml->{ATTR_nick};
+                       } elsif ( my $borrowernumber = getborrowernumber( $cardnumber ) ) {
+                               warn "SAML login OK $borrowernumber using cardnumber: $cardnumber update userid: $userid";
+                               my $sth = $dbh->prepare(qq{ update borrowers set userid = ? where userid = cardnumber and cardnumber = ? });
+                               $sth->execute( $userid, $cardnumber );
                        } else {
                                my $borrower = {
-                                       cardnumber => $categorycode . $saml->{ATTR_code},
+                                       cardnumber => $cardnumber,
                                        categorycode => $categorycode,
 
                                        userid    => $saml->{ATTR_nick},