X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FAuth%2FSessionValue.pm;h=0950a46b95c1ca217472110cd2a2828908e4e5e4;hb=7718459cd0be728a57d7ca75dd8077316df7d730;hp=6bf65b9232a0bd64107edb642454e9ba96f3e081;hpb=e0ba33ff38a40207472185d639567966e136da6b;p=kivitendo-erp.git diff --git a/SL/Auth/SessionValue.pm b/SL/Auth/SessionValue.pm index 6bf65b923..0950a46b9 100644 --- a/SL/Auth/SessionValue.pm +++ b/SL/Auth/SessionValue.pm @@ -2,17 +2,21 @@ package SL::Auth::SessionValue; use strict; +# Classes that overload stringification must be known before +# YAML::Load() is called. +use SL::Locale::String (); + use Scalar::Util qw(weaken); -use YAML; use SL::DBUtils; +use SL::YAML; sub new { my ($class, %params) = @_; my $self = bless {}, $class; - map { $self->{$_} = $params{$_} } qw(auth key value auto_restore); + map { $self->{$_} = $params{$_} } qw(auth key value auto_restore modified); $self->{fetched} = exists $params{value}; $self->{parsed} = !$params{raw} && exists $params{value}; @@ -33,13 +37,16 @@ sub get { sub get_dumped { my ($self) = @_; - return YAML::Dump($self->get); + no warnings 'once'; + local $YAML::Stringify = 1; + return SL::YAML::Dump($self->get); } sub _fetch { my ($self) = @_; return $self if $self->{fetched}; + return $self if !$self->{auth}->session_tables_present; my $dbh = $self->{auth}->dbconnect; my $query = qq|SELECT sess_value FROM auth.session_content WHERE (session_id = ?) AND (sess_key = ?)|; @@ -52,7 +59,7 @@ sub _fetch { sub _parse { my ($self) = @_; - $self->{value} = YAML::Load($self->{value}) unless $self->{parsed}; + $self->{value} = SL::YAML::Load($self->{value}) unless $self->{parsed}; $self->{parsed} = 1; return $self; @@ -65,7 +72,7 @@ sub _load_value { my %params = ( simple => 1 ); eval { - my $data = YAML::Load($value); + my $data = SL::YAML::Load($value); if (ref $data eq 'HASH') { map { $params{$_} = $data->{$_} } keys %{ $data };