extended calc_expiry
Marcus Ramberg [Mon, 20 Feb 2006 07:33:49 +0000 (07:33 +0000)]
Changes
lib/Catalyst/Plugin/Session/State/Cookie.pm

diff --git a/Changes b/Changes
index bda447b..f7e3e26 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,8 @@
 Revision history for Perl extension Catalyst::Plugin::Session::State::Cookie
 
+       - refactored make_session_cookie to separate calc_expiry, and made
+         that easily overloadable.
+
 0.02    2005-12-28 13:51:00
         - Fixed cookie_expires to support browser session cookies.
         - Renamed default cookie name from just 'session' to
index 70e0aef..0bef033 100644 (file)
@@ -42,19 +42,27 @@ sub make_session_cookie {
         ( $cfg->{cookie_domain} ? ( domain => $cfg->{cookie_domain} ) : () ),
     };
 
+    $cookie->{expires}=$c->calc_expiry();
+
+    return $cookie;
+}
+
+sub calc_expiry {
+    my $c=shift;
+    my $cfg    = $c->config->{session};
+    my $value= $c->NEXT::calc_expiry(@_);
+    return $value if $value;
     if ( exists $cfg->{cookie_expires} ) {
         if ( $cfg->{cookie_expires} > 0 ) {
-            $cookie->{expires} = time() + $cfg->{cookie_expires};
+            return time() + $cfg->{cookie_expires};
         }
         else {
-            $cookie->{expires} = undef;
+            return undef;
         }
     }
     else {
-        $cookie->{expires} = $c->session_expires;
+       return $c->session_expires;
     }
-
-    return $cookie;
 }
 
 sub prepare_cookies {