X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FPlugin%2FSession.pm;h=1f50ff5902523307ff20f7bdc732206573d564bd;hb=093e1027a0b02b4478cc3170e17dda8728569764;hp=e82aa917b110e13d3e049412c048a44d42bedfe5;hpb=cb104024fec84bd23646b85314cc0d83fef092b1;p=catagits%2FCatalyst-Plugin-Session.git diff --git a/lib/Catalyst/Plugin/Session.pm b/lib/Catalyst/Plugin/Session.pm index e82aa91..1f50ff5 100644 --- a/lib/Catalyst/Plugin/Session.pm +++ b/lib/Catalyst/Plugin/Session.pm @@ -430,10 +430,21 @@ sub validate_session_id { sub session { my $c = shift; - $c->_session || $c->_load_session || do { + my $session = $c->_session || $c->_load_session || do { $c->create_session_id_if_needed; $c->initialize_session_data; }; + + if (@_) { + my $new_values = @_ > 1 ? { @_ } : $_[0]; + croak('session takes a hash or hashref') unless ref $new_values; + + for my $key (keys %$new_values) { + $session->{$key} = $new_values->{$key}; + } + } + + $session; } sub keep_flash { @@ -683,6 +694,13 @@ requests. This method will automatically create a new session and session ID if none exists. +You can also set session keys by passing a list of key/value pairs or a +hashref. + + $c->session->{foo} = "bar"; # This works. + $c->session(one => 1, two => 2); # And this. + $c->session({ answer => 42 }); # And this. + =item session_expires =item session_expires $reset