--- file_not_specified_in_diff +++ file_not_specified_in_diff @@ -19,0 +19,2 @@ +# +# Shibboleth support added by Tom Francart (2012) - only tested at KU Leuven @@ -32,0 +34,4 @@ +use C4::Members qw(AddMember); # [Tom] Shibboleth: add user + use C4::Members::Attributes; + use C4::Members::AttributeTypes; + @@ -636,10 +642,11 @@ - if ( $userid = $ENV{'REMOTE_USER'} ) { - # Using Basic Authentication, no cookies required - $cookie = $query->cookie( - -name => 'CGISESSID', - -value => '', - -expires => '' - ); - $loggedin = 1; - } - elsif ( $sessionID = $query->cookie("CGISESSID")) { # assignment, not comparison --- +# [Tom] Removed: incompatible with Shib +# if ( $userid = $ENV{'REMOTE_USER'} ) { +# # Using Basic Authentication, no cookies required +# $cookie = $query->cookie( +# -name => 'CGISESSID', +# -value => '', +# -expires => '' +# ); +# $loggedin = 1; +# } + if ( $sessionID = $query->cookie("CGISESSID")) { # assignment, not comparison @@ -730,0 +737,5 @@ + + unless ($userid) { + $userid = $ENV{'HTTP_SHIB_PERSON_UID'}; + } + @@ -1441,0 +1453,2 @@ + + @@ -1491,0 +1505,67 @@ + + +# [Tom] Try shibboleth + + # check if shib login ok: + if ($ENV{'HTTP_SHIB_PERSON_UID'} =~ /^\w\d+$/ ) { + +# print "\n\nkonijn2\n"; + + + my %borrower; + $borrower{cardnumber} = $ENV{'HTTP_SHIB_PERSON_UID'}; + $borrower{userid} = $ENV{'HTTP_SHIB_PERSON_UID'}; + $borrower{firstname} = $ENV{'HTTP_SHIB_PERSON_GIVENNAME'}; # MANDATORY FIELD + $borrower{surname} = $ENV{'HTTP_SHIB_PERSON_SURNAME'}; # MANDATORY FIELD + $borrower{initials} = substr($borrower{firstname},0,1).substr($borrower{surname},0,1)." "; # MANDATORY FIELD + $borrower{streetaddress} = ''; # MANDATORY FIELD + $borrower{city} = " "; # MANDATORY FIELD + $borrower{phone} = " "; # MANDATORY FIELD + $borrower{branchcode} = 'AUD'; # MANDATORY FIELD + $borrower{email} = $ENV{'HTTP_SHIB_PERSON_MAIL'}; + $borrower{dateexpiry} = '2050-01-01'; + + + my $catnr=$ENV{'HTTP_SHIB_KUL_OUNUMBER'}; + if ($catnr =~ /50000672/) { # EXP ORL AUD + $borrower{categorycode} = 'EXPORL'; + $borrower{flags} = 2; + } else { + $borrower{categorycode} = 'STUDENT'; + } + + $userid=$borrower{userid}; + + # check if borrower exists + my $sth=$dbh->prepare("select password from borrowers where cardnumber=?"); + $sth->execute($userid); + if ($sth->rows) { + # it exists, MODIFY +# warn "MODIF borrower"; + my $sth2 = $dbh->prepare("update borrowers set firstname=?,surname=?,initials=?,categorycode=?,branchcode=?,email=? where cardnumber=?"); + $sth2->execute($borrower{firstname},$borrower{surname},$borrower{initials}, + $borrower{categorycode},$borrower{branchcode},$borrower{email}, + ,$userid); + } else { + # it does not exists, ADD borrower + print "ADD borrower"; + my $borrowerid = AddMember(%borrower); + +# C4::Members::Attributes::SetBorrowerAttributes($borrowernumber, $extended_patron_attributes); + } + # + # CREATE or MODIFY PASSWORD/LOGIN + # + # search borrowerid +# $sth = $dbh->prepare("select borrowernumber from borrowers where cardnumber=?"); +# $sth->execute($userid); +# my ($borrowerid)=$sth->fetchrow; +# warn "change password for $borrowerid setting $password"; +# my $digest=md5_base64($password); +# changepassword($userid,$borrowerid,$digest); + return 1, $userid, $userid; + + } +####### End Shibboleth ######### + +