Commit | Line | Data |
06190e8b |
1 | package Plack::Session::State; |
2 | use strict; |
3 | use warnings; |
4 | |
bd992981 |
5 | use Plack::Util::Accessor qw[ session_key ]; |
fe1bfe7d |
6 | use Digest::SHA1; |
06190e8b |
7 | |
8 | sub new { |
9 | my ($class, %params) = @_; |
10 | bless { |
11 | session_key => $params{ session_key } || 'plack_session', |
06190e8b |
12 | expired => {} |
13 | } => $class; |
14 | } |
15 | |
16 | sub expire_session_id { |
17 | my ($self, $id) = @_; |
18 | $self->{expired}->{ $id }++; |
19 | } |
20 | |
bd992981 |
21 | sub 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 |
29 | sub get_session_id { |
30 | my ($self, $request) = @_; |
31 | $self->extract( $request ) |
32 | || |
bd992981 |
33 | $self->generate( $request ) |
34 | } |
35 | |
36 | sub extract { |
37 | my ($self, $request) = @_; |
38 | $self->check_expired( $request->param( $self->session_key ) ); |
39 | } |
40 | |
fe1bfe7d |
41 | sub generate { |
42 | my $self = shift; |
43 | return Digest::SHA1::sha1_hex(rand() . $$ . {} . time); |
bd992981 |
44 | } |
45 | |
fe1bfe7d |
46 | |
bd992981 |
47 | sub finalize { |
48 | my ($self, $id, $response) = @_; |
49 | (); |
06190e8b |
50 | } |
51 | |
fe1bfe7d |
52 | 1; |