Now throws exceptions when id_field is invalid or can not be determined
[catagits/Catalyst-Authentication-Store-DBIx-Class.git] / t / lib / TestApp.pm
1 package TestApp;\r
2 \r
3 use strict;\r
4 use Catalyst;\r
5 use Data::Dumper;\r
6 \r
7 TestApp->config( $ENV{TESTAPP_CONFIG} );\r
8 \r
9 TestApp->setup( @{$ENV{TESTAPP_PLUGINS}} );\r
10 \r
11 sub 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
30 sub 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
49 sub 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
76 sub 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
104 sub 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
117 sub get_session_user : Global {\r
118     my ( $self, $c ) = @_;\r
119 \r
120     if ( $c->user_exists ) {\r
121         $c->res->body( $c->user->get('username') );\r
122     }\r
123 }\r
124 \r
125 sub 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
138 sub 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
151 sub 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
157 sub get_usersession : Global {\r
158     my ( $self, $c ) = @_;\r
159     $c->res->body( $c->user_session->{foo} || '' );\r
160 }\r
161 \r
162 \r
163 1;\r