|
Lines 650-655
sub checkauth {
Link Here
|
| 650 |
# This parameter is the name of the CAS server we want to authenticate against, |
650 |
# This parameter is the name of the CAS server we want to authenticate against, |
| 651 |
# when using authentication against multiple CAS servers, as configured in Auth_cas_servers.yaml |
651 |
# when using authentication against multiple CAS servers, as configured in Auth_cas_servers.yaml |
| 652 |
my $casparam = $query->param('cas'); |
652 |
my $casparam = $query->param('cas'); |
|
|
653 |
my $q_userid = $query->param('userid') // ''; |
| 653 |
|
654 |
|
| 654 |
if ( $userid = $ENV{'REMOTE_USER'} ) { |
655 |
if ( $userid = $ENV{'REMOTE_USER'} ) { |
| 655 |
# Using Basic Authentication, no cookies required |
656 |
# Using Basic Authentication, no cookies required |
|
Lines 669-677
sub checkauth {
Link Here
|
| 669 |
my $session = get_session($sessionID); |
670 |
my $session = get_session($sessionID); |
| 670 |
C4::Context->_new_userenv($sessionID); |
671 |
C4::Context->_new_userenv($sessionID); |
| 671 |
my ($ip, $lasttime, $sessiontype); |
672 |
my ($ip, $lasttime, $sessiontype); |
|
|
673 |
my $s_userid = ''; |
| 672 |
if ($session){ |
674 |
if ($session){ |
|
|
675 |
$s_userid = $session->param('id') // ''; |
| 673 |
C4::Context::set_userenv( |
676 |
C4::Context::set_userenv( |
| 674 |
$session->param('number'), $session->param('id'), |
677 |
$session->param('number'), $s_userid, |
| 675 |
$session->param('cardnumber'), $session->param('firstname'), |
678 |
$session->param('cardnumber'), $session->param('firstname'), |
| 676 |
$session->param('surname'), $session->param('branch'), |
679 |
$session->param('surname'), $session->param('branch'), |
| 677 |
$session->param('branchname'), $session->param('flags'), |
680 |
$session->param('branchname'), $session->param('flags'), |
|
Lines 684-697
sub checkauth {
Link Here
|
| 684 |
$debug and printf STDERR "AUTH_SESSION: (%s)\t%s %s - %s\n", map {$session->param($_)} qw(cardnumber firstname surname branch) ; |
687 |
$debug and printf STDERR "AUTH_SESSION: (%s)\t%s %s - %s\n", map {$session->param($_)} qw(cardnumber firstname surname branch) ; |
| 685 |
$ip = $session->param('ip'); |
688 |
$ip = $session->param('ip'); |
| 686 |
$lasttime = $session->param('lasttime'); |
689 |
$lasttime = $session->param('lasttime'); |
| 687 |
$userid = $session->param('id'); |
690 |
$userid = $s_userid; |
| 688 |
$sessiontype = $session->param('sessiontype') || ''; |
691 |
$sessiontype = $session->param('sessiontype') || ''; |
| 689 |
} |
692 |
} |
| 690 |
if ( ( ($query->param('koha_login_context')) && ($query->param('userid') ne ($session->param('id') // '')) ) |
693 |
if ( ( $query->param('koha_login_context') && ($q_userid ne $s_userid) ) |
| 691 |
|| ( $cas && $query->param('ticket') ) ) { |
694 |
|| ( $cas && $query->param('ticket') ) ) { |
| 692 |
#if a user enters an id ne to the id in the current session, we need to log them in... |
695 |
#if a user enters an id ne to the id in the current session, we need to log them in... |
| 693 |
#first we need to clear the anonymous session... |
696 |
#first we need to clear the anonymous session... |
| 694 |
$debug and warn "query id = " . $query->param('userid') . " but session id = " . $session->param('id'); |
697 |
$debug and warn "query id = $q_userid but session id = $s_userid"; |
| 695 |
$session->flush; |
698 |
$session->flush; |
| 696 |
$session->delete(); |
699 |
$session->delete(); |
| 697 |
C4::Context->_unset_userenv($sessionID); |
700 |
C4::Context->_unset_userenv($sessionID); |
|
Lines 711-717
sub checkauth {
Link Here
|
| 711 |
logout_cas($query); |
714 |
logout_cas($query); |
| 712 |
} |
715 |
} |
| 713 |
} |
716 |
} |
| 714 |
elsif ( $lasttime < time() - $timeout ) { |
717 |
elsif ( !$lasttime || ($lasttime < time() - $timeout) ) { |
| 715 |
# timed logout |
718 |
# timed logout |
| 716 |
$info{'timed_out'} = 1; |
719 |
$info{'timed_out'} = 1; |
| 717 |
$session->delete() if $session; |
720 |
$session->delete() if $session; |
|
Lines 759-766
sub checkauth {
Link Here
|
| 759 |
-value => $session->id, |
762 |
-value => $session->id, |
| 760 |
-HttpOnly => 1 |
763 |
-HttpOnly => 1 |
| 761 |
); |
764 |
); |
| 762 |
$userid = $query->param('userid'); |
765 |
$userid = $q_userid; |
| 763 |
my $pki_field = C4::Context->preference('AllowPKIAuth') // 'None'; |
766 |
my $pki_field = C4::Context->preference('AllowPKIAuth'); |
|
|
767 |
if (! defined($pki_field) ) { |
| 768 |
print STDERR "ERROR: Missing system preference AllowPKIAuth.\n"; |
| 769 |
$pki_field = 'None'; |
| 770 |
} |
| 764 |
if ( ( $cas && $query->param('ticket') ) |
771 |
if ( ( $cas && $query->param('ticket') ) |
| 765 |
|| $userid |
772 |
|| $userid |
| 766 |
|| $pki_field ne 'None' |
773 |
|| $pki_field ne 'None' |
|
Lines 835-841
sub checkauth {
Link Here
|
| 835 |
my $retuserid; |
842 |
my $retuserid; |
| 836 |
( $return, $cardnumber, $retuserid ) = |
843 |
( $return, $cardnumber, $retuserid ) = |
| 837 |
checkpw( $dbh, $userid, $password, $query ); |
844 |
checkpw( $dbh, $userid, $password, $query ); |
| 838 |
$userid = $retuserid if ( $retuserid ne '' ); |
845 |
$userid = $retuserid if ( $retuserid ); |
| 839 |
} |
846 |
} |
| 840 |
if ($return) { |
847 |
if ($return) { |
| 841 |
#_session_log(sprintf "%20s from %16s logged in at %30s.\n", $userid,$ENV{'REMOTE_ADDR'},(strftime '%c', localtime)); |
848 |
#_session_log(sprintf "%20s from %16s logged in at %30s.\n", $userid,$ENV{'REMOTE_ADDR'},(strftime '%c', localtime)); |
| 842 |
- |
|
|