1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
package Dancer2::Session::SimpleNoChangeId;
# ABSTRACT: in-memory session backend for Dancer2
#
# This is a version of Dancer2::Session::Simple that does not support
# _change_id thus using stash data/destroy/reload session
use Moo;
use Dancer2::Core::Types;
use Carp;
with 'Dancer2::Core::Role::SessionFactory';
# The singleton that contains all the session objects created
my $SESSIONS = {};
sub _sessions {
my ($self) = @_;
return [ keys %{$SESSIONS} ];
}
sub _retrieve {
my ( $class, $id ) = @_;
my $s = $SESSIONS->{$id};
croak "Invalid session ID: $id"
if !defined $s;
return $s;
}
sub _destroy {
my ( $class, $id ) = @_;
delete $SESSIONS->{$id};
}
sub _flush {
my ( $class, $id, $data ) = @_;
$SESSIONS->{$id} = $data;
}
1;
|