Added ability to avoid DB hits when restoring from session
[catagits/Catalyst-Authentication-Store-DBIx-Class.git] / t / lib / TestApp.pm
CommitLineData
ad93b3e9 1package TestApp;\r
2\r
3use strict;\r
4use Catalyst;\r
5use Data::Dumper;\r
6\r
7TestApp->config( $ENV{TESTAPP_CONFIG} );\r
8\r
9TestApp->setup( @{$ENV{TESTAPP_PLUGINS}} );\r
10\r
11sub user_login : Global {\r
12 my ( $self, $c ) = @_;\r
13\r
14 ## this allows anyone to login regardless of status.\r
15 $c->authenticate({ username => $c->request->params->{'username'},\r
16 password => $c->request->params->{'password'}\r
17 });\r
18\r
19 if ( $c->user_exists ) {\r
20 if ( $c->req->params->{detach} ) {\r
21 $c->detach( $c->req->params->{detach} );\r
22 }\r
23 $c->res->body( $c->user->get('username') . ' logged in' );\r
24 }\r
25 else {\r
26 $c->res->body( 'not logged in' );\r
27 }\r
28}\r
29\r
30sub notdisabled_login : Global {\r
31 my ( $self, $c ) = @_;\r
32\r
33 $c->authenticate({ username => $c->request->params->{'username'},\r
34 password => $c->request->params->{'password'},\r
35 status => [ 'active', 'registered' ]\r
36 });\r
37\r
38 if ( $c->user_exists ) {\r
39 if ( $c->req->params->{detach} ) {\r
40 $c->detach( $c->req->params->{detach} );\r
41 }\r
42 $c->res->body( $c->user->get('username') . ' logged in' );\r
43 }\r
44 else {\r
45 $c->res->body( 'not logged in' );\r
46 }\r
47}\r
48\r
49sub searchargs_login : Global {\r
50 my ( $self, $c ) = @_;\r
51\r
52 my $username = $c->request->params->{'username'} || '';\r
53 my $email = $c->request->params->{'email'} || '';\r
54 \r
55 $c->authenticate({ \r
56 password => $c->request->params->{'password'},\r
57 dbix_class => {\r
58 searchargs => [ { "-or" => [ username => $username,\r
59 email => $email ]}, \r
60 { prefetch => qw/ map_user_role /}\r
61 ]\r
62 }\r
63 });\r
64\r
65 if ( $c->user_exists ) {\r
66 if ( $c->req->params->{detach} ) {\r
67 $c->detach( $c->req->params->{detach} );\r
68 }\r
69 $c->res->body( $c->user->get('username') . ' logged in' );\r
70 }\r
71 else {\r
72 $c->res->body( 'not logged in' );\r
73 }\r
74}\r
75\r
76sub resultset_login : Global {\r
77 my ( $self, $c ) = @_;\r
78\r
79 my $username = $c->request->params->{'username'} || '';\r
80 my $email = $c->request->params->{'email'} || '';\r
81 \r
82 \r
83 my $rs = $c->model('TestApp::User')->search({ "-or" => [ username => $username,\r
84 email => $email ]});\r
85 \r
86 $c->authenticate({ \r
87 password => $c->request->params->{'password'},\r
88 dbix_class => { resultset => $rs }\r
89 });\r
90 \r
91 if ( $c->user_exists ) {\r
92 if ( $c->req->params->{detach} ) {\r
93 $c->detach( $c->req->params->{detach} );\r
94 }\r
95 $c->res->body( $c->user->get('username') . ' logged in' );\r
96 }\r
97 else {\r
98 $c->res->body( 'not logged in' );\r
99 }\r
100}\r
101\r
102## need to add a resultset login test and a search args login test\r
103\r
104sub user_logout : Global {\r
105 my ( $self, $c ) = @_;\r
106\r
107 $c->logout;\r
108\r
109 if ( ! $c->user ) {\r
110 $c->res->body( 'logged out' );\r
111 }\r
112 else {\r
113 $c->res->body( 'not logged ok' );\r
114 }\r
115}\r
116\r
117sub get_session_user : Global {\r
118 my ( $self, $c ) = @_;\r
f26005a7 119 \r
ad93b3e9 120 if ( $c->user_exists ) {\r
f26005a7 121 $c->res->body($c->user->get('username')); # . " " . Dumper($c->user->get_columns()) );\r
ad93b3e9 122 }\r
123}\r
124\r
125sub is_admin : Global {\r
126 my ( $self, $c ) = @_;\r
127\r
128 eval {\r
129 if ( $c->assert_user_roles( qw/admin/ ) ) {\r
130 $c->res->body( 'ok' );\r
131 }\r
132 };\r
133 if ($@) {\r
134 $c->res->body( 'failed' );\r
135 }\r
136}\r
137\r
138sub is_admin_user : Global {\r
139 my ( $self, $c ) = @_;\r
140\r
141 eval {\r
142 if ( $c->assert_user_roles( qw/admin user/ ) ) {\r
143 $c->res->body( 'ok' );\r
144 }\r
145 };\r
146 if ($@) {\r
147 $c->res->body( 'failed' );\r
148 }\r
149}\r
150\r
151sub set_usersession : Global {\r
152 my ( $self, $c, $value ) = @_;\r
153 $c->user_session->{foo} = $value;\r
154 $c->res->body( 'ok' );\r
155}\r
156\r
157sub get_usersession : Global {\r
158 my ( $self, $c ) = @_;\r
159 $c->res->body( $c->user_session->{foo} || '' );\r
160}\r
161\r
162\r
1631;\r