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 )