View | Details | Raw Unified | Return to bug 11077
Collapse All | Expand All

(-)a/C4/Auth.pm (-9 / +15 lines)
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
- 

Return to bug 11077