Index: Keeper.pm =================================================================== --- Keeper.pm (revision 254) +++ Keeper.pm (revision 255) @@ -44,6 +44,8 @@ status => $res->status, ltime => time, ); + my ($type_prop) = grep { $_->{attr} eq 'type' } $res->structure; + $data{type} = $res->type if $type_prop; $self->store_value ( %data ); } return $self->get_session(); @@ -82,6 +84,34 @@ } +sub autologon { + my $self = shift; + my %opts = @_; + + my $profile = delete $opts{profile}; + if ( ref $profile ) { + my %data = ( + id => $profile->id, + name => $profile->name, + email => $profile->email, + login => $profile->login, + status => $profile->status, + ltime => time, + ); + my ($type_prop) = grep { $_->{attr} eq 'type' } $profile->structure; + $data{type} = $profile->type if $type_prop; + my ($ava_prop) = grep { $_->{attr} eq 'avatar' } $profile->structure; + if ( $ava_prop ) { + my $avatar = $profile->get_image('avatar'); + $data{avatar} = $avatar->{mini}{filename} if ref $avatar && exists $avatar->{filename}; + } + $self->store_value ( %data ); + return $self->get_session(); + } + return undef; +} + + sub get_value { my ($self, $name) = @_; @@ -211,11 +241,6 @@ tie %session, 'Apache::Session::Memcached', $sid, { Handler => $keeper->{session}->MEMD, Expiration => $state->{session}->{lifetime}, -# Servers => $state->{session}->memcached_servers, -# NoRehash => 1, -# Readonly => 0, -# Debug => $DEBUG, -# CompressThreshold => 10_000 }; }; } else { @@ -249,17 +274,12 @@ tie %session, 'Apache::Session::Memcached', undef, { Handler => $keeper->{session}->MEMD, Expiration => $state->{session}->{lifetime}, -# Servers => $state->{session}->memcached_servers, -# NoRehash => 1, -# Readonly => 0, -# Debug => $DEBUG, -# CompressThreshold => 10_000 }; }; } else { eval { tie %session, 'Apache::Session::File', undef, { - Directory => $state->session->session_dir, + Directory => $state->{session}->session_dir, }; }; }