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

(-)a/C4/Auth.pm (-18 / +13 lines)
Lines 23-29 use Digest::MD5 qw(md5_base64); Link Here
23
use File::Spec;
23
use File::Spec;
24
use JSON qw/encode_json/;
24
use JSON qw/encode_json/;
25
use URI::Escape;
25
use URI::Escape;
26
use CGI::Session;
26
use Data::Session;
27
27
28
require Exporter;
28
require Exporter;
29
use C4::Context;
29
use C4::Context;
Lines 905-911 sub checkauth { Link Here
905
    unless ( $userid || $sessionID ) {
905
    unless ( $userid || $sessionID ) {
906
906
907
        #we initiate a session prior to checking for a username to allow for anonymous sessions...
907
        #we initiate a session prior to checking for a username to allow for anonymous sessions...
908
        my $session = get_session("") or die "Auth ERROR: Cannot get_session()";
908
        my $session = get_session("") or return;#die "Auth ERROR: Cannot get_session()";
909
909
910
        # Save anonymous search history in new session so it can be retrieved
910
        # Save anonymous search history in new session so it can be retrieved
911
        # by get_template_and_user to store it in user's search history after
911
        # by get_template_and_user to store it in user's search history after
Lines 1111-1117 sub checkauth { Link Here
1111
                    $session->param( 'branchname',   $branchname );
1111
                    $session->param( 'branchname',   $branchname );
1112
                    $session->param( 'flags',        $userflags );
1112
                    $session->param( 'flags',        $userflags );
1113
                    $session->param( 'emailaddress', $emailaddress );
1113
                    $session->param( 'emailaddress', $emailaddress );
1114
                    $session->param( 'ip',           $session->remote_addr() );
1114
                    $session->param( 'ip',           $ENV{REMOTE_ADDR} );
1115
                    $session->param( 'lasttime',     time() );
1115
                    $session->param( 'lasttime',     time() );
1116
                    $session->param( 'shibboleth',   $shibSuccess );
1116
                    $session->param( 'shibboleth',   $shibSuccess );
1117
                    $debug and printf STDERR "AUTH_4: (%s)\t%s %s - %s\n", map { $session->param($_) } qw(cardnumber firstname surname branch);
1117
                    $debug and printf STDERR "AUTH_4: (%s)\t%s %s - %s\n", map { $session->param($_) } qw(cardnumber firstname surname branch);
Lines 1129-1135 sub checkauth { Link Here
1129
                    $session->param( 'branchname',   'NO_LIBRARY_SET' );
1129
                    $session->param( 'branchname',   'NO_LIBRARY_SET' );
1130
                    $session->param( 'flags',        1 );
1130
                    $session->param( 'flags',        1 );
1131
                    $session->param( 'emailaddress', C4::Context->preference('KohaAdminEmailAddress') );
1131
                    $session->param( 'emailaddress', C4::Context->preference('KohaAdminEmailAddress') );
1132
                    $session->param( 'ip',           $session->remote_addr() );
1132
                    $session->param( 'ip',           $ENV{REMOTE_ADDR} );
1133
                    $session->param( 'lasttime',     time() );
1133
                    $session->param( 'lasttime',     time() );
1134
                }
1134
                }
1135
                if ($persona) {
1135
                if ($persona) {
Lines 1154-1160 sub checkauth { Link Here
1154
                    C4::Context->_unset_userenv($sessionID);
1154
                    C4::Context->_unset_userenv($sessionID);
1155
                }
1155
                }
1156
                $session->param( 'lasttime', time() );
1156
                $session->param( 'lasttime', time() );
1157
                $session->param( 'ip',       $session->remote_addr() );
1157
                $session->param( 'ip', $ENV{REMOTE_ADDR} );
1158
                $session->param( 'sessiontype', 'anon' );
1158
                $session->param( 'sessiontype', 'anon' );
1159
            }
1159
            }
1160
        }    # END if ( $userid    = $query->param('userid') )
1160
        }    # END if ( $userid    = $query->param('userid') )
Lines 1165-1171 sub checkauth { Link Here
1165
            $debug and warn "Initiating an anonymous session...";
1165
            $debug and warn "Initiating an anonymous session...";
1166
1166
1167
            # setting a couple of other session vars...
1167
            # setting a couple of other session vars...
1168
            $session->param( 'ip',          $session->remote_addr() );
1168
            $session->param( 'ip', $ENV{REMOTE_ADDR} );
1169
            $session->param( 'lasttime',    time() );
1169
            $session->param( 'lasttime',    time() );
1170
            $session->param( 'sessiontype', 'anon' );
1170
            $session->param( 'sessiontype', 'anon' );
1171
        }
1171
        }
Lines 1559-1565 sub check_api_auth { Link Here
1559
                $session->param( 'branchname',   $branchname );
1559
                $session->param( 'branchname',   $branchname );
1560
                $session->param( 'flags',        $userflags );
1560
                $session->param( 'flags',        $userflags );
1561
                $session->param( 'emailaddress', $emailaddress );
1561
                $session->param( 'emailaddress', $emailaddress );
1562
                $session->param( 'ip',           $session->remote_addr() );
1562
                $session->param( 'ip', $ENV{REMOTE_ADDR} );
1563
                $session->param( 'lasttime',     time() );
1563
                $session->param( 'lasttime',     time() );
1564
            } elsif ( $return == 2 ) {
1564
            } elsif ( $return == 2 ) {
1565
1565
Lines 1573-1579 sub check_api_auth { Link Here
1573
                $session->param( 'branchname',   'NO_LIBRARY_SET' );
1573
                $session->param( 'branchname',   'NO_LIBRARY_SET' );
1574
                $session->param( 'flags',        1 );
1574
                $session->param( 'flags',        1 );
1575
                $session->param( 'emailaddress', C4::Context->preference('KohaAdminEmailAddress') );
1575
                $session->param( 'emailaddress', C4::Context->preference('KohaAdminEmailAddress') );
1576
                $session->param( 'ip',           $session->remote_addr() );
1576
                $session->param( 'ip', $ENV{REMOTE_ADDR} );
1577
                $session->param( 'lasttime',     time() );
1577
                $session->param( 'lasttime',     time() );
1578
            }
1578
            }
1579
            C4::Context->set_userenv(
1579
            C4::Context->set_userenv(
Lines 1709-1718 sub check_cookie_auth { Link Here
1709
1709
1710
=head2 get_session
1710
=head2 get_session
1711
1711
1712
  use CGI::Session;
1713
  my $session = get_session($sessionID);
1712
  my $session = get_session($sessionID);
1714
1713
1715
Given a session ID, retrieve the CGI::Session object used to store
1714
Given a session ID, retrieve the Data::Session object used to store
1716
the session's state.  The session object can be used to store
1715
the session's state.  The session object can be used to store
1717
data that needs to be accessed by different scripts during a
1716
data that needs to be accessed by different scripts during a
1718
user's session.
1717
user's session.
Lines 1728-1747 sub get_session { Link Here
1728
    my $dbh            = C4::Context->dbh;
1727
    my $dbh            = C4::Context->dbh;
1729
    my $session;
1728
    my $session;
1730
    if ( $storage_method eq 'mysql' ) {
1729
    if ( $storage_method eq 'mysql' ) {
1731
        $session = new CGI::Session( "driver:MySQL;serializer:yaml;id:md5", $sessionID, { Handle => $dbh } );
1730
        $session = Data::Session->new( dbh => $dbh, id => $sessionID );
1732
    }
1731
    }
1733
    elsif ( $storage_method eq 'Pg' ) {
1732
    elsif ( $storage_method eq 'Pg' ) {
1734
        $session = new CGI::Session( "driver:PostgreSQL;serializer:yaml;id:md5", $sessionID, { Handle => $dbh } );
1733
        die "not implemented yet";
1735
    }
1734
    }
1736
    elsif ( $storage_method eq 'memcached' && Koha::Caches->get_instance->memcached_cache ) {
1735
    elsif ( $storage_method eq 'memcached' && Koha::Caches->get_instance->memcached_cache ) {
1737
        my $memcached = Koha::Caches->get_instance()->memcached_cache;
1736
        die "not implemented yet";
1738
        $session = new CGI::Session( "driver:memcached;serializer:yaml;id:md5", $sessionID, { Memcached => $memcached } );
1739
    }
1737
    }
1740
    else {
1738
    else {
1741
        # catch all defaults to tmp should work on all systems
1739
        die "not implemented yet";
1742
        my $dir = File::Spec->tmpdir;
1743
        my $instance = C4::Context->config( 'database' ); #actually for packages not exactly the instance name, but generally safer to leave it as it is
1744
        $session = new CGI::Session( "driver:File;serializer:yaml;id:md5", $sessionID, { Directory => "$dir/cgisess_$instance" } );
1745
    }
1740
    }
1746
    return $session;
1741
    return $session;
1747
}
1742
}
(-)a/C4/Context.pm (-3 / +1 lines)
Lines 857-865 set_userenv is called in Auth.pm Link Here
857
#'
857
#'
858
sub set_userenv {
858
sub set_userenv {
859
    shift @_;
859
    shift @_;
860
    my ($usernum, $userid, $usercnum, $userfirstname, $usersurname, $userbranch, $branchname, $userflags, $emailaddress, $branchprinter, $persona, $shibboleth)=
860
    my ($usernum, $userid, $usercnum, $userfirstname, $usersurname, $userbranch, $branchname, $userflags, $emailaddress, $branchprinter, $persona, $shibboleth) = @_;
861
    map { Encode::is_utf8( $_ ) ? $_ : Encode::decode('UTF-8', $_) } # CGI::Session doesn't handle utf-8, so we decode it here
862
    @_;
863
    my $var=$context->{"activeuser"} || '';
861
    my $var=$context->{"activeuser"} || '';
864
    my $cell = {
862
    my $cell = {
865
        "number"     => $usernum,
863
        "number"     => $usernum,
(-)a/C4/InstallAuth.pm (-6 / +7 lines)
Lines 26-32 use C4::Context; Link Here
26
use C4::Output;
26
use C4::Output;
27
use C4::Templates;
27
use C4::Templates;
28
use C4::Koha;
28
use C4::Koha;
29
use CGI::Session;
30
29
31
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
30
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
32
31
Lines 241-249 sub checkauth { Link Here
241
    my $logout = $query->param('logout.x');
240
    my $logout = $query->param('logout.x');
242
    if ( $sessionID = $query->cookie("CGISESSID") ) {
241
    if ( $sessionID = $query->cookie("CGISESSID") ) {
243
        C4::Context->_new_userenv($sessionID);
242
        C4::Context->_new_userenv($sessionID);
244
        my $session =
243
        # FIXME Use Data::Session instead
245
          new CGI::Session( "driver:File;serializer:yaml", $sessionID,
244
        my $session;
246
            { Directory => '/tmp' } );
245
        #new CGI::Session( "driver:File;serializer:yaml", $sessionID,
246
        #    { Directory => '/tmp' } );
247
        if ( $session->param('cardnumber') ) {
247
        if ( $session->param('cardnumber') ) {
248
            C4::Context->set_userenv(
248
            C4::Context->set_userenv(
249
                $session->param('number'),
249
                $session->param('number'),
Lines 282-289 sub checkauth { Link Here
282
        }
282
        }
283
    }
283
    }
284
    unless ($userid) {
284
    unless ($userid) {
285
        my $session =
285
        # FIXME Use Data::Session instead
286
          new CGI::Session( "driver:File;serializer:yaml", undef, { Directory => '/tmp' } );
286
        my $session;# =
287
        #  new CGI::Session( "driver:File;serializer:yaml", undef, { Directory => '/tmp' } );
287
        $sessionID = $session->id;
288
        $sessionID = $session->id;
288
        $userid    = $query->param('userid');
289
        $userid    = $query->param('userid');
289
        C4::Context->_new_userenv($sessionID);
290
        C4::Context->_new_userenv($sessionID);
(-)a/C4/Installer/PerlDependencies.pm (-15 lines)
Lines 317-327 our $PERL_DEPS = { Link Here
317
        'required' => '1',
317
        'required' => '1',
318
        'min_ver'  => '5.43'
318
        'min_ver'  => '5.43'
319
    },
319
    },
320
    'CGI::Session::Serialize::yaml' => {
321
        'usage'    => 'Core',
322
        'required' => '1',
323
        'min_ver'  => '4.2'
324
    },
325
    'CGI::Carp' => {
320
    'CGI::Carp' => {
326
        'usage'    => 'Core',
321
        'usage'    => 'Core',
327
        'required' => '1',
322
        'required' => '1',
Lines 427-442 our $PERL_DEPS = { Link Here
427
        'required' => '1',
422
        'required' => '1',
428
        'min_ver'  => '2'
423
        'min_ver'  => '2'
429
    },
424
    },
430
    'CGI::Session' => {
431
        'usage'    => 'Core',
432
        'required' => '1',
433
        'min_ver'  => '4.2'
434
    },
435
    'CGI::Session::Driver::memcached' => {
436
        'usage'    => 'Memcached Feature (Experimental)',
437
        'required' => '0',
438
        'min_ver'  => '0.04',
439
    },
440
    'POSIX' => {
425
    'POSIX' => {
441
        'usage'    => 'Core',
426
        'usage'    => 'Core',
442
        'required' => '1',
427
        'required' => '1',
(-)a/circ/circulation.pl (-1 / +1 lines)
Lines 40-46 use MARC::Record; Link Here
40
use C4::Reserves;
40
use C4::Reserves;
41
use Koha::Holds;
41
use Koha::Holds;
42
use C4::Context;
42
use C4::Context;
43
use CGI::Session;
43
use Data::Session;
44
use C4::Members::Attributes qw(GetBorrowerAttributes);
44
use C4::Members::Attributes qw(GetBorrowerAttributes);
45
use Koha::Patron;
45
use Koha::Patron;
46
use Koha::Patron::Debarments qw(GetDebarments);
46
use Koha::Patron::Debarments qw(GetDebarments);
(-)a/members/routing-lists.pl (-1 lines)
Lines 27-33 use C4::Members::Attributes qw(GetBorrowerAttributes); Link Here
27
use C4::Context;
27
use C4::Context;
28
use C4::Serials;
28
use C4::Serials;
29
use Koha::Patron::Images;
29
use Koha::Patron::Images;
30
use CGI::Session;
31
30
32
my $query = new CGI;
31
my $query = new CGI;
33
32
(-)a/tools/background-job-progress.pl (-2 lines)
Lines 23-29 use strict; Link Here
23
# standard or CPAN modules used
23
# standard or CPAN modules used
24
use IO::File;
24
use IO::File;
25
use CGI qw ( -utf8 );
25
use CGI qw ( -utf8 );
26
use CGI::Session;
27
use C4::Context;
26
use C4::Context;
28
use C4::Auth qw/check_cookie_auth/;
27
use C4::Auth qw/check_cookie_auth/;
29
use C4::BackgroundJob;
28
use C4::BackgroundJob;
30
- 

Return to bug 17427