use IO::File;
use Time::HiRes qw(gettimeofday);
use List::MoreUtils qw(uniq);
+use YAML;
use SL::Auth::Constants qw(:all);
use SL::Auth::DB;
$sth = prepare_execute_query($form, $dbh, $query, $session_id);
while (my $ref = $sth->fetchrow_hashref()) {
- $self->{SESSION}->{$ref->{sess_key}} = $ref->{sess_value};
- $form->{$ref->{sess_key}} = $ref->{sess_value} if (!defined $form->{$ref->{sess_key}});
+ my $value = $self->_load_value($ref->{sess_value});
+ $self->{SESSION}->{$ref->{sess_key}} = $value;
+ $form->{$ref->{sess_key}} = $value if (!defined $form->{$ref->{sess_key}});
}
$sth->finish();
return SESSION_OK;
}
+sub _load_value {
+ return $_[1] if $_[1] !~ m/^---/;
+
+ my $value;
+ eval {
+ $value = YAML::Load($_[1]);
+ 1;
+ } or return $_[1];
+
+ return $value;
+}
+
sub destroy_session {
$main::lxdebug->enter_sub();
sub set_session_value {
$main::lxdebug->enter_sub();
- my $self = shift;
+ my $self = shift;
+ my %params = @_;
$self->{SESSION} ||= { };
- while (2 <= scalar @_) {
- my $key = shift;
- my $value = shift;
-
- $self->{SESSION}->{$key} = $value;
+ while (my ($key, $value) = each %params) {
+ $self->{SESSION}->{ $key } = YAML::Dump($value);
}
$main::lxdebug->leave_sub();