package SessionTestApp::Controller::Root; use strict; use warnings; use Data::Dumper; use base qw/Catalyst::Controller/; __PACKAGE__->config( namespace => '' ); sub login : Global { my ( $self, $c ) = @_; $c->session; $c->res->output("logged in"); } sub login_without_address : Global { my ( $self, $c ) = @_; $c->session; $c->log->debug($c->request->address); delete $c->session->{__address}; $c->res->output("logged in (without address)"); } sub logout : Global { my ( $self, $c ) = @_; $c->res->output( "logged out after " . $c->session->{counter} . " requests" ); $c->delete_session("logout"); } sub logout_redirect : Global { my ( $self, $c ) = @_; $c->logout; $c->res->output("redirect from here"); $c->res->redirect( $c->uri_for('from_logout_redirect') ); } sub from_logout_redirect : Global { my ( $self, $c ) = @_; $c->res->output( "got here from logout_redirect" ); } sub set_session_variable : Global { my ( $self, $c, $var, $val ) = @_; $c->session->{$var} = $val; $c->res->output("session variable set"); } sub get_session_variable : Global { my ( $self, $c, $var ) = @_; my $val = $c->session->{$var} || 'n.a.'; $c->res->output("VAR_$var=$val"); } sub get_sessid : Global { my ( $self, $c ) = @_; my $sid = $c->sessionid || 'n.a.'; $c->res->output("SID=$sid"); } sub dump_session : Global { my ( $self, $c ) = @_; my $sid = $c->sessionid || 'n.a.'; my $dump = Dumper($c->session || 'n.a.'); $c->res->output("[SID=$sid]\n$dump"); } sub change_sessid : Global { my ( $self, $c ) = @_; $c->change_session_id; $c->res->output("session id changed"); } sub page : Global { my ( $self, $c ) = @_; if ( $c->session_is_valid ) { $c->res->output("you are logged in, session expires at " . $c->session_expires); $c->session->{counter}++; } else { $c->res->output("please login"); } } sub user_agent : Global { my ( $self, $c ) = @_; $c->res->output('UA=' . $c->req->user_agent); } sub accessor_test : Global { my ( $self, $c ) = @_; $c->session( one => 1, two => 2, ); $c->session( { three => 3, four => 4, }, ); $c->session->{five} = 5; for my $key (keys %{ $c->session }) { $c->res->write("$key: " . $c->session->{$key} . "\n"); } } sub dump_these_loads_session : Global { my ($self, $c) = @_; $c->dump_these(); if ($c->_session) { $c->res->write('LOADED') } else { $c->res->write('NOT'); } } sub change_session_expires : Global { my ($self, $c) = @_; $c->change_session_expires(31536000); $c->res->output($c->session_expires); } sub reset_session_expires : Global { my ($self, $c) = @_; $c->reset_session_expires; $c->res->output($c->session_expires); } 1;