package TestApp; use strict; use Catalyst; use Data::Dumper; TestApp->config( $ENV{TESTAPP_CONFIG} ); TestApp->setup( @{$ENV{TESTAPP_PLUGINS}} ); sub user_login : Global { my ( $self, $c ) = @_; ## this allows anyone to login regardless of status. $c->authenticate({ username => $c->request->params->{'username'}, password => $c->request->params->{'password'} }); if ( $c->user_exists ) { if ( $c->req->params->{detach} ) { $c->detach( $c->req->params->{detach} ); } $c->res->body( $c->user->get('username') . ' logged in' ); } else { $c->res->body( 'not logged in' ); } } sub notdisabled_login : Global { my ( $self, $c ) = @_; $c->authenticate({ username => $c->request->params->{'username'}, password => $c->request->params->{'password'}, status => [ 'active', 'registered' ] }); if ( $c->user_exists ) { if ( $c->req->params->{detach} ) { $c->detach( $c->req->params->{detach} ); } $c->res->body( $c->user->get('username') . ' logged in' ); } else { $c->res->body( 'not logged in' ); } } =pod sub searchargs_login : Global { my ( $self, $c ) = @_; my $username = $c->request->params->{'username'} || ''; my $email = $c->request->params->{'email'} || ''; $c->authenticate({ password => $c->request->params->{'password'}, dbix_class => { searchargs => [ { "-or" => [ username => $username, email => $email ]}, { prefetch => qw/ map_user_role /} ] } }); if ( $c->user_exists ) { if ( $c->req->params->{detach} ) { $c->detach( $c->req->params->{detach} ); } $c->res->body( $c->user->get('username') . ' logged in' ); } else { $c->res->body( 'not logged in' ); } } sub resultset_login : Global { my ( $self, $c ) = @_; my $username = $c->request->params->{'username'} || ''; my $email = $c->request->params->{'email'} || ''; my $rs = $c->model('TestApp::User')->search({ "-or" => [ username => $username, email => $email ]}); $c->authenticate({ password => $c->request->params->{'password'}, dbix_class => { resultset => $rs } }); if ( $c->user_exists ) { if ( $c->req->params->{detach} ) { $c->detach( $c->req->params->{detach} ); } $c->res->body( $c->user->get('username') . ' logged in' ); } else { $c->res->body( 'not logged in' ); } } =cut ## need to add a resultset login test and a search args login test sub user_logout : Global { my ( $self, $c ) = @_; $c->logout; if ( ! $c->user ) { $c->res->body( 'logged out' ); } else { $c->res->body( 'not logged ok' ); } } sub get_session_user : Global { my ( $self, $c ) = @_; if ( $c->user_exists ) { $c->res->body( $c->user->get('username') ); } } sub is_admin : Global { my ( $self, $c ) = @_; eval { if ( $c->assert_user_roles( qw/admin/ ) ) { $c->res->body( 'ok' ); } }; if ($@) { $c->res->body( 'failed' ); } } sub is_admin_user : Global { my ( $self, $c ) = @_; eval { if ( $c->assert_user_roles( qw/admin user/ ) ) { $c->res->body( 'ok' ); } }; if ($@) { $c->res->body( 'failed' ); } } sub set_usersession : Global { my ( $self, $c, $value ) = @_; $c->user_session->{foo} = $value; $c->res->body( 'ok' ); } sub get_usersession : Global { my ( $self, $c ) = @_; $c->res->body( $c->user_session->{foo} || '' ); } 1;