package MyCatalystApp::Controller::Captcha;
use HTML::FormHandler;
use Moose;
use namespace::autoclean;
BEGIN {extends 'Catalyst::Controller'; }
=head1 NAME
MyCatalystApp::Controller::Captcha - Catalyst Controller
=head1 DESCRIPTION
Catalyst Controller.
=head1 METHODS
=cut
=head2 index
=cut
sub index :Path :Args(0) {
my ( $self, $c ) = @_;
my $form = MyCatalystApp::Controller::Captcha::Form->new(
ctx => $c,
);
if($form->process($c->req->params)){
$c->res->body("verification succeeded");
return;
}
$c->res->body($form->render);
}
=head2 test
returns the image belonging to the current captcha
=cut
sub image : Local {
my ( $self, $c ) = @_;
my $captcha = $c->session->{captcha};
$c->response->body($captcha->{image});
$c->response->content_type('image/'. $captcha->{type});
$c->res->headers->expires( time() );
$c->res->headers->header( 'Last-Modified' => HTTP::Date::time2str );
$c->res->headers->header( 'Pragma' => 'no-cache' );
$c->res->headers->header( 'Cache-Control' => 'no-cache' );
}
sub get_rnd :Local{
my ( $self, $c ) = @_;
my $captcha = $c->session->{captcha};
die "no captcha in session" unless $captcha;
$c->res->body($captcha->{rnd});
}
=head1 AUTHOR
Lukas Thiemeier,1R/18,7289,none
=head1 LICENSE
This library is free software. You can redistribute it and/or modify
it under the same terms as Perl itself.
=cut
__PACKAGE__->meta->make_immutable;
{
package MyCatalystApp::Controller::Captcha::Form;
use HTML::FormHandler::Moose;
extends qw/HTML::FormHandler/;
with qw/
HTML::FormHandler::Render::Simple
HTML::FormHandler::TraitFor::Captcha
/;
has_field submit => ( type => "Submit" );
__PACKAGE__->meta->make_immutable;
1;
}
1;