Bug 28489: POD - CGI::Session::Serialize::yamlxs for CGI::Session
Signed-off-by: David Cook <dcook@prosentient.com.au> Signed-off-by: Nick Clemens <nick@bywatersolutions.com> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
This commit is contained in:
parent
8df6ac9c88
commit
1887f3b53f
1 changed files with 33 additions and 4 deletions
37
C4/Auth.pm
37
C4/Auth.pm
|
@ -1,3 +1,32 @@
|
||||||
|
package CGI::Session::Serialize::yamlxs;
|
||||||
|
# Proof of concept: CGI::Session::Serialize::yamlxs for CGI::Session:
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
# hacky hack to trick CGI::Session loader for serializers not to die in its "require":
|
||||||
|
$INC{'CGI/Session/Serialize/yamlxs.pm'} = '1';
|
||||||
|
|
||||||
|
use CGI::Session::ErrorHandler;
|
||||||
|
use YAML::XS ();
|
||||||
|
use Encode ();
|
||||||
|
|
||||||
|
$CGI::Session::Serialize::yamlxs::VERSION = '0.1';
|
||||||
|
@CGI::Session::Serialize::yamlxs::ISA = ( "CGI::Session::ErrorHandler" );
|
||||||
|
|
||||||
|
sub freeze {
|
||||||
|
my ($self, $data) = @_;
|
||||||
|
return Encode::decode_utf8(YAML::XS::Dump($data));
|
||||||
|
}
|
||||||
|
|
||||||
|
sub thaw {
|
||||||
|
my ($self, $string) = @_;
|
||||||
|
return (YAML::XS::Load(Encode::encode_utf8($string)))[0];
|
||||||
|
}
|
||||||
|
# ********************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
package C4::Auth;
|
package C4::Auth;
|
||||||
|
|
||||||
# Copyright 2000-2002 Katipo Communications
|
# Copyright 2000-2002 Katipo Communications
|
||||||
|
@ -1850,21 +1879,21 @@ sub _get_session_params {
|
||||||
my $storage_method = C4::Context->preference('SessionStorage');
|
my $storage_method = C4::Context->preference('SessionStorage');
|
||||||
if ( $storage_method eq 'mysql' ) {
|
if ( $storage_method eq 'mysql' ) {
|
||||||
my $dbh = C4::Context->dbh;
|
my $dbh = C4::Context->dbh;
|
||||||
return { dsn => "driver:MySQL;id:md5", dsn_args => { Handle => $dbh } };
|
return { dsn => "serializer:yamlxs;driver:MySQL;id:md5", dsn_args => { Handle => $dbh } };
|
||||||
}
|
}
|
||||||
elsif ( $storage_method eq 'Pg' ) {
|
elsif ( $storage_method eq 'Pg' ) {
|
||||||
my $dbh = C4::Context->dbh;
|
my $dbh = C4::Context->dbh;
|
||||||
return { dsn => "driver:PostgreSQL;id:md5", dsn_args => { Handle => $dbh } };
|
return { dsn => "serializer:yamlxs;driver:PostgreSQL;id:md5", dsn_args => { Handle => $dbh } };
|
||||||
}
|
}
|
||||||
elsif ( $storage_method eq 'memcached' && Koha::Caches->get_instance->memcached_cache ) {
|
elsif ( $storage_method eq 'memcached' && Koha::Caches->get_instance->memcached_cache ) {
|
||||||
my $memcached = Koha::Caches->get_instance()->memcached_cache;
|
my $memcached = Koha::Caches->get_instance()->memcached_cache;
|
||||||
return { dsn => "driver:memcached;id:md5", dsn_args => { Memcached => $memcached } };
|
return { dsn => "serializer:yamlxs;driver:memcached;id:md5", dsn_args => { Memcached => $memcached } };
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
# catch all defaults to tmp should work on all systems
|
# catch all defaults to tmp should work on all systems
|
||||||
my $dir = C4::Context::temporary_directory;
|
my $dir = C4::Context::temporary_directory;
|
||||||
my $instance = C4::Context->config( 'database' ); #actually for packages not exactly the instance name, but generally safer to leave it as it is
|
my $instance = C4::Context->config( 'database' ); #actually for packages not exactly the instance name, but generally safer to leave it as it is
|
||||||
return { dsn => "driver:File;id:md5", dsn_args => { Directory => "$dir/cgisess_$instance" } };
|
return { dsn => "serializer:yamlxs;driver:File;id:md5", dsn_args => { Directory => "$dir/cgisess_$instance" } };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue