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

(-)a/C4/Auth.pm (-25 / +23 lines)
Lines 24-29 use Carp qw( croak ); Link Here
24
use Digest::MD5 qw( md5_base64 );
24
use Digest::MD5 qw( md5_base64 );
25
use CGI::Session;
25
use CGI::Session;
26
use CGI::Session::ErrorHandler;
26
use CGI::Session::ErrorHandler;
27
use Data::Session;
27
use URI;
28
use URI;
28
use URI::QueryParam;
29
use URI::QueryParam;
29
30
Lines 1228-1234 sub checkauth { Link Here
1228
                    $session->param( 'desk_name',     $desk_name);
1229
                    $session->param( 'desk_name',     $desk_name);
1229
                    $session->param( 'flags',        $userflags );
1230
                    $session->param( 'flags',        $userflags );
1230
                    $session->param( 'emailaddress', $emailaddress );
1231
                    $session->param( 'emailaddress', $emailaddress );
1231
                    $session->param( 'ip',           $session->remote_addr() );
1232
                    $session->param( 'ip',           $ENV{REMOTE_ADDR} );
1232
                    $session->param( 'lasttime',     time() );
1233
                    $session->param( 'lasttime',     time() );
1233
                    $session->param( 'interface',    $type);
1234
                    $session->param( 'interface',    $type);
1234
                    $session->param( 'shibboleth',   $shibSuccess );
1235
                    $session->param( 'shibboleth',   $shibSuccess );
Lines 1256-1262 sub checkauth { Link Here
1256
                    C4::Context::_unset_userenv($sessionID);
1257
                    C4::Context::_unset_userenv($sessionID);
1257
                }
1258
                }
1258
                $session->param( 'lasttime', time() );
1259
                $session->param( 'lasttime', time() );
1259
                $session->param( 'ip',       $session->remote_addr() );
1260
                $session->param( 'ip', $ENV{REMOTE_ADDR} );
1260
                $session->param( 'sessiontype', 'anon' );
1261
                $session->param( 'sessiontype', 'anon' );
1261
                $session->param( 'interface', $type);
1262
                $session->param( 'interface', $type);
1262
            }
1263
            }
Lines 1266-1272 sub checkauth { Link Here
1266
            # anonymous sessions are created only for the OPAC
1267
            # anonymous sessions are created only for the OPAC
1267
1268
1268
            # setting a couple of other session vars...
1269
            # setting a couple of other session vars...
1269
            $session->param( 'ip',          $session->remote_addr() );
1270
            $session->param( 'ip', $ENV{REMOTE_ADDR} );
1270
            $session->param( 'lasttime',    time() );
1271
            $session->param( 'lasttime',    time() );
1271
            $session->param( 'sessiontype', 'anon' );
1272
            $session->param( 'sessiontype', 'anon' );
1272
            $session->param( 'interface', $type);
1273
            $session->param( 'interface', $type);
Lines 1663-1669 sub check_api_auth { Link Here
1663
                $session->param( 'branchname',   $branchname );
1664
                $session->param( 'branchname',   $branchname );
1664
                $session->param( 'flags',        $userflags );
1665
                $session->param( 'flags',        $userflags );
1665
                $session->param( 'emailaddress', $emailaddress );
1666
                $session->param( 'emailaddress', $emailaddress );
1666
                $session->param( 'ip',           $session->remote_addr() );
1667
                $session->param( 'ip', $ENV{REMOTE_ADDR} );
1667
                $session->param( 'lasttime',     time() );
1668
                $session->param( 'lasttime',     time() );
1668
                $session->param( 'interface',    'api'  );
1669
                $session->param( 'interface',    'api'  );
1669
            }
1670
            }
Lines 1819-1828 sub check_cookie_auth { Link Here
1819
1820
1820
=head2 get_session
1821
=head2 get_session
1821
1822
1822
  use CGI::Session;
1823
  my $session = get_session($sessionID);
1823
  my $session = get_session($sessionID);
1824
1824
1825
Given a session ID, retrieve the CGI::Session object used to store
1825
Given a session ID, retrieve the Data::Session object used to store
1826
the session's state.  The session object can be used to store
1826
the session's state.  The session object can be used to store
1827
data that needs to be accessed by different scripts during a
1827
data that needs to be accessed by different scripts during a
1828
user's session.
1828
user's session.
Lines 1836-1870 sub _get_session_params { Link Here
1836
    my $storage_method = C4::Context->preference('SessionStorage');
1836
    my $storage_method = C4::Context->preference('SessionStorage');
1837
    if ( $storage_method eq 'mysql' ) {
1837
    if ( $storage_method eq 'mysql' ) {
1838
        my $dbh = C4::Context->dbh;
1838
        my $dbh = C4::Context->dbh;
1839
        return { dsn => "serializer:yamlxs;driver:MySQL;id:md5", dsn_args => { Handle => $dbh } };
1839
        # Note that the doc is wrong, type is required, if not provided it default to File
1840
    }
1840
        return { dbh => $dbh, type => 'serialize:yamlxs;driver:mysql;id:MD5' };
1841
    elsif ( $storage_method eq 'Pg' ) {
1841
    } elsif ( $storage_method eq 'Pg' ) {
1842
        my $dbh = C4::Context->dbh;
1842
        die "The system preference SessionStorage is set to 'Pg' but this is not supported yet!";
1843
        return { dsn => "serializer:yamlxs;driver:PostgreSQL;id:md5", dsn_args => { Handle => $dbh } };
1843
    } elsif ( $storage_method eq 'memcached' and my $memcached = Koha::Caches->get_instance->memcached_cache ) {
1844
    }
1844
        return {
1845
    elsif ( $storage_method eq 'memcached' && Koha::Caches->get_instance->memcached_cache ) {
1845
            type  => 'serialize:yamlxs;driver:Memcached;id:SHA1',
1846
        my $memcached = Koha::Caches->get_instance()->memcached_cache;
1846
            cache => $memcached,
1847
        return { dsn => "serializer:yamlxs;driver:memcached;id:md5", dsn_args => { Memcached => $memcached } };
1847
        };
1848
    } elsif ( $storage_method ne 'tmp' ) {
1849
        warn "The system preference SessionStorage is set to an invalid value '$storage_method'";
1848
    }
1850
    }
1849
    else {
1851
    else {
1850
        # catch all defaults to tmp should work on all systems
1852
        # catch all defaults to tmp should work on all systems
1853
        if ( $storage_method ne 'tmp' ) {
1854
            warn "The session has not been correctly retrieved, defaulting to temporary storage: " . $Data::Session::errstr;
1855
        }
1851
        my $dir = C4::Context::temporary_directory;
1856
        my $dir = C4::Context::temporary_directory;
1852
        my $instance = C4::Context->config( 'database' ); #actually for packages not exactly the instance name, but generally safer to leave it as it is
1857
        my $instance = C4::Context->config('database');    #actually for packages not exactly the instance name, but generally safer to leave it as it is
1853
        return { dsn => "serializer:yamlxs;driver:File;id:md5", dsn_args => { Directory => "$dir/cgisess_$instance" } };
1858
        return { type => 'serialize:yamlxs;driver:File;id:MD5', directory => "$dir/cgisess_$instance" };
1854
    }
1859
    }
1855
}
1860
}
1856
1861
1857
sub get_session {
1862
sub get_session {
1858
    my $sessionID      = shift;
1863
    my $sessionID      = shift;
1859
    my $params = _get_session_params();
1864
    my $params = _get_session_params();
1860
    my $session;
1865
    my $session = Data::Session->new( %$params ) || die $Data::Session::errstr;
1861
    if( $sessionID ) { # find existing
1862
        CGI::Session::ErrorHandler->set_error( q{} ); # clear error, cpan issue #111463
1863
        $session = CGI::Session->load( $params->{dsn}, $sessionID, $params->{dsn_args} );
1864
    } else {
1865
        $session = CGI::Session->new( $params->{dsn}, $sessionID, $params->{dsn_args} );
1866
        # no need to flush here
1867
    }
1868
    return $session;
1866
    return $session;
1869
}
1867
}
1870
1868
(-)a/C4/InstallAuth.pm (-7 / +11 lines)
Lines 18-24 package C4::InstallAuth; Link Here
18
# along with Koha; if not, see <http://www.gnu.org/licenses>.
18
# along with Koha; if not, see <http://www.gnu.org/licenses>.
19
19
20
use Modern::Perl;
20
use Modern::Perl;
21
use CGI::Session;
21
use Data::Session;
22
use File::Spec;
22
use File::Spec;
23
23
24
require Exporter;
24
require Exporter;
Lines 240-250 sub checkauth { Link Here
240
    my %info;
240
    my %info;
241
    my ( $userid, $cookie, $sessionID, $flags, $envcookie );
241
    my ( $userid, $cookie, $sessionID, $flags, $envcookie );
242
    my $logout = $query->param('logout.x');
242
    my $logout = $query->param('logout.x');
243
    my $dir = File::Spec->tmpdir;
243
    if ( $sessionID = $query->cookie("CGISESSID") ) {
244
    if ( $sessionID = $query->cookie("CGISESSID") ) {
244
        C4::Context->_new_userenv($sessionID);
245
        C4::Context->_new_userenv($sessionID);
245
        my $session =
246
        my $session = Data::Session->new(
246
          CGI::Session->new( "driver:File", $sessionID,
247
            type => 'driver:File;id:MD5',
247
            { Directory => $sessdir } );
248
            directory => $dir
249
        ) or die $Data::Session::errstr;
248
        if ( $session->param('cardnumber') ) {
250
        if ( $session->param('cardnumber') ) {
249
            C4::Context->set_userenv(
251
            C4::Context->set_userenv(
250
                $session->param('number'),
252
                $session->param('number'),
Lines 283-290 sub checkauth { Link Here
283
        }
285
        }
284
    }
286
    }
285
    unless ($userid) {
287
    unless ($userid) {
286
        my $session =
288
        my $session = Data::Session->new(
287
          CGI::Session->new( "driver:File", undef, { Directory => $sessdir } );
289
            type => 'driver:File;id:MD5',
290
            directory => $dir
291
        ) or die $Data::Session::errstr;
288
        $sessionID = $session->id;
292
        $sessionID = $session->id;
289
        $userid    = $query->param('userid');
293
        $userid    = $query->param('userid');
290
        C4::Context->_new_userenv($sessionID);
294
        C4::Context->_new_userenv($sessionID);
Lines 327-333 sub checkauth { Link Here
327
                $session->param( 'flags',      1 );
331
                $session->param( 'flags',      1 );
328
                $session->param( 'emailaddress',
332
                $session->param( 'emailaddress',
329
                    C4::Context->preference('KohaAdminEmailAddress') );
333
                    C4::Context->preference('KohaAdminEmailAddress') );
330
                $session->param( 'ip',       $session->remote_addr() );
334
                $session->param( 'ip',         $ENV{REMOTE_ADDR} );
331
                $session->param( 'lasttime', time() );
335
                $session->param( 'lasttime', time() );
332
                $userid = C4::Context->config('user');
336
                $userid = C4::Context->config('user');
333
            }
337
            }
(-)a/circ/circulation.pl (-1 / +1 lines)
Lines 40-46 use C4::Search qw( new_record_from_zebra ); 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 Koha::AuthorisedValues;
44
use Koha::AuthorisedValues;
45
use Koha::CsvProfiles;
45
use Koha::CsvProfiles;
46
use Koha::Patrons;
46
use Koha::Patrons;
(-)a/cpanfile (-1 / +3 lines)
Lines 11-17 requires 'CGI', '3.15'; Link Here
11
requires 'CGI::Carp', '1.29';
11
requires 'CGI::Carp', '1.29';
12
requires 'CGI::Compile', '>= 0.17, != 0.24';
12
requires 'CGI::Compile', '>= 0.17, != 0.24';
13
requires 'CGI::Emulate::PSGI', '0.20';
13
requires 'CGI::Emulate::PSGI', '0.20';
14
requires 'CGI::Session', '4.2';
15
requires 'CPAN::Meta', '2.150006';
14
requires 'CPAN::Meta', '2.150006';
16
requires 'Cache::Memcached', '1.30';
15
requires 'Cache::Memcached', '1.30';
17
requires 'Cache::Memcached::Fast::Safe', '0.06';
16
requires 'Cache::Memcached::Fast::Safe', '0.06';
Lines 28-33 requires 'DBIx::Class::Schema::Loader', '0.07039'; Link Here
28
requires 'DBIx::RunSQL', '0.14';
27
requires 'DBIx::RunSQL', '0.14';
29
requires 'Data::Dumper', '2.121';
28
requires 'Data::Dumper', '2.121';
30
requires 'Data::ICal', '0.13';
29
requires 'Data::ICal', '0.13';
30
requires 'Data::Session', '1.18';
31
requires 'Data::Session::Driver::Memcached', '1.18';
32
requires 'Data::Session::Driver::mysql', '1.18';
31
requires 'Date::Calc', '5.4';
33
requires 'Date::Calc', '5.4';
32
requires 'Date::Manip', '5.44';
34
requires 'Date::Manip', '5.44';
33
requires 'DateTime', '0.58';
35
requires 'DateTime', '0.58';
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/admin.pref (-1 lines)
Lines 113-119 Administration: Link Here
113
              default: mysql
113
              default: mysql
114
              choices:
114
              choices:
115
                  mysql: MySQL database
115
                  mysql: MySQL database
116
                  Pg: PostgreSQL database (not supported)
117
                  tmp: Temporary files
116
                  tmp: Temporary files
118
                  memcached: Memcached server
117
                  memcached: Memcached server
119
        -
118
        -
(-)a/members/routing-lists.pl (-1 lines)
Lines 25-31 use C4::Members; Link Here
25
use C4::Context;
25
use C4::Context;
26
use C4::Serials;
26
use C4::Serials;
27
use Koha::Patrons;
27
use Koha::Patrons;
28
use CGI::Session;
29
28
30
my $query = CGI->new;
29
my $query = CGI->new;
31
30
(-)a/tools/background-job-progress.pl (-2 lines)
Lines 21-27 use Modern::Perl; Link Here
21
21
22
# standard or CPAN modules used
22
# standard or CPAN modules used
23
use CGI qw ( -utf8 );
23
use CGI qw ( -utf8 );
24
use CGI::Session;
25
use C4::Context;
24
use C4::Context;
26
use C4::Auth qw( check_cookie_auth );
25
use C4::Auth qw( check_cookie_auth );
27
use C4::BackgroundJob;
26
use C4::BackgroundJob;
28
- 

Return to bug 17427