Catalyst-Plugin-Session-DynamicExpiry
view release on metacpan or search on metacpan
lib/Catalyst/Plugin/Session/DynamicExpiry.pm view on Meta::CPAN
package Catalyst::Plugin::Session::DynamicExpiry;
use Moose;
use MRO::Compat;
use Try::Tiny;
use namespace::autoclean;
our $VERSION='0.04';
has [qw/_session_time_to_live/] => ( is => 'rw' );
sub session_time_to_live {
my ( $c, @args ) = @_;
if ( @args ) {
$c->_session_time_to_live($args[0]);
try { $c->_session->{__time_to_live} = $args[0] };
}
return $c->_session_time_to_live || eval { $c->_session->{__time_to_live} };
}
sub calculate_initial_session_expires {
my $c = shift;
if ( defined( my $ttl = $c->_session_time_to_live ) ) {
$c->log->debug("Overridden time to live: $ttl") if $c->debug;
return time() + $ttl;
}
return $c->next::method( @_ );
}
sub calculate_extended_session_expires {
my $c = shift;
if ( defined(my $ttl = $c->session_time_to_live) ) {
$c->log->debug("Overridden time to live: $ttl") if $c->debug;
return time() + $ttl;
}
return $c->next::method( @_ );
}
sub _save_session {
my $c = shift;
if ( my $session_data = $c->_session ) {
if ( defined( my $ttl = $c->_session_time_to_live ) ) {
$session_data->{__time_to_live} = $ttl;
}
}
$c->next::method( @_ );
}
1;
=head1 NAME
Catalyst::Plugin::Session::DynamicExpiry - per-session custom expiry times
=head1 SYNOPSIS
( run in 1.297 second using v1.01-cache-2.11-cpan-39bf76dae61 )