Fixed I generation to use SHA1 instead of sequential. Added sane defaults to Middleware.
[catagits/Web-Session.git] / lib / Plack / Session / State.pm
CommitLineData
06190e8b 1package Plack::Session::State;
2use strict;
3use warnings;
4
bd992981 5use Plack::Util::Accessor qw[ session_key ];
fe1bfe7d 6use Digest::SHA1;
06190e8b 7
8sub new {
9 my ($class, %params) = @_;
10 bless {
11 session_key => $params{ session_key } || 'plack_session',
06190e8b 12 expired => {}
13 } => $class;
14}
15
16sub expire_session_id {
17 my ($self, $id) = @_;
18 $self->{expired}->{ $id }++;
19}
20
bd992981 21sub check_expired {
22 my ($self, $id) = @_;
06190e8b 23 return unless $id && not exists $self->{expired}->{ $id };
24 return $id;
25}
26
06190e8b 27# given a request, get the
28# session id from it
29sub get_session_id {
30 my ($self, $request) = @_;
31 $self->extract( $request )
32 ||
bd992981 33 $self->generate( $request )
34}
35
36sub extract {
37 my ($self, $request) = @_;
38 $self->check_expired( $request->param( $self->session_key ) );
39}
40
fe1bfe7d 41sub generate {
42 my $self = shift;
43 return Digest::SHA1::sha1_hex(rand() . $$ . {} . time);
bd992981 44}
45
fe1bfe7d 46
bd992981 47sub finalize {
48 my ($self, $id, $response) = @_;
49 ();
06190e8b 50}
51
fe1bfe7d 521;