a6d86d1a3cb7c247204e8ac11974c4d9528820c4
[catagits/Catalyst-Plugin-Session.git] / t / lib / SessionTestApp / Controller / Root.pm
1 package SessionTestApp::Controller::Root;
2 use strict;
3 use warnings;
4 use Data::Dumper;
5
6 use base qw/Catalyst::Controller/;
7
8 __PACKAGE__->config( namespace => '' );
9
10 sub login : Global {
11     my ( $self, $c ) = @_;
12     $c->session;
13     $c->res->output("logged in");
14 }
15
16 sub login_without_address : Global {
17     my ( $self, $c ) = @_;
18     $c->session;
19     $c->log->debug($c->request->address);
20     delete $c->session->{__address};
21     $c->res->output("logged in (without address)");
22 }
23
24 sub logout : Global {
25     my ( $self, $c ) = @_;
26     $c->res->output(
27         "logged out after " . $c->session->{counter} . " requests" );
28     $c->delete_session("logout");
29 }
30
31 sub logout_redirect : Global {
32     my ( $self, $c ) = @_;
33
34     $c->logout;
35     $c->res->output("redirect from here");
36     $c->res->redirect( $c->uri_for('from_logout_redirect') );
37 }
38
39 sub from_logout_redirect : Global {
40     my ( $self, $c ) = @_;
41     $c->res->output( "got here from logout_redirect" );
42 }
43
44 sub set_session_variable : Global {
45     my ( $self, $c, $var, $val ) = @_;
46     $c->session->{$var} = $val;
47     $c->res->output("session variable set");
48 }
49
50 sub get_session_variable : Global {
51     my ( $self, $c, $var ) = @_;
52     my $val = $c->session->{$var} || 'n.a.';
53     $c->res->output("VAR_$var=$val");
54 }
55
56 sub get_sessid : Global {
57     my ( $self, $c ) = @_;
58     my $sid = $c->sessionid || 'n.a.';
59     $c->res->output("SID=$sid");
60 }
61
62 sub dump_session : Global {
63     my ( $self, $c ) = @_;
64     my $sid = $c->sessionid || 'n.a.';
65     my $dump = Dumper($c->session || 'n.a.');
66     $c->res->output("[SID=$sid]\n$dump");
67 }
68
69 sub change_sessid : Global {
70     my ( $self, $c ) = @_;
71     $c->change_session_id;
72     $c->res->output("session id changed");
73 }
74
75 sub page : Global {
76     my ( $self, $c ) = @_;
77     if ( $c->session_is_valid ) {
78         $c->res->output("you are logged in, session expires at " . $c->session_expires);
79         $c->session->{counter}++;
80     }
81     else {
82         $c->res->output("please login");
83     }
84 }
85
86 sub user_agent : Global {
87     my ( $self, $c ) = @_;
88     $c->res->output('UA=' . $c->req->user_agent);
89 }
90
91 sub accessor_test : Global {
92     my ( $self, $c ) = @_;
93
94     $c->session(
95         one => 1,
96         two => 2,
97     );
98
99     $c->session( {
100             three => 3,
101             four => 4,
102         },
103     );
104
105     $c->session->{five} = 5;
106
107     for my $key (keys %{ $c->session }) {
108         $c->res->write("$key: " . $c->session->{$key} . "\n");
109     }
110 }
111
112 sub dump_these_loads_session : Global {
113     my ($self, $c) = @_;
114
115     $c->dump_these();
116     if ($c->_session) {
117         $c->res->write('LOADED')
118     }
119     else {
120         $c->res->write('NOT');
121     }
122 }
123
124 sub change_session_expires : Global {
125     my ($self, $c) = @_;
126     $c->change_session_expires(31536000);
127     $c->res->output($c->session_expires);
128 }
129
130 1;