summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Dancer/Session/PSGI.pm24
1 files changed, 21 insertions, 3 deletions
diff --git a/lib/Dancer/Session/PSGI.pm b/lib/Dancer/Session/PSGI.pm
index 00bb5d6..c530961 100644
--- a/lib/Dancer/Session/PSGI.pm
+++ b/lib/Dancer/Session/PSGI.pm
@@ -4,20 +4,38 @@ use strict;
use warnings;
our $VERSION = '0.01';
+use Dancer::SharedData;
+use base 'Dancer::Session::Abstract';
+
+sub retrieve {
+ my ($class, $id) = @_;
+ my $req = Plack::Request->new(Dancer::SharedData->request->{env});
+ my $session = $req->session();
+ return Dancer::Session::PSGI->new(%$session);
+}
+
+sub flush {
+ my $self = shift;
+ my $req = Plack::Request->new(Dancer::SharedData->request->{env});
+ my $session = $req->session();
+ map {$session->{$_} = $self->{$_}} keys %$self;
+ return $self;
+}
+
1;
__END__
=head1 NAME
-Dancer::Session::PSGI -
+Dancer::Session::PSGI - Let Plack::Middleware::Session handle session
=head1 SYNOPSIS
- use Dancer::Session::PSGI;
+ setting session => 'PSGI'
=head1 DESCRIPTION
-Dancer::Session::PSGI is
+Dancer::Session::PSGI let you use C<Plack::Middleware::Session> as backend for your sessions.
=head1 AUTHOR