The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Catalyst::TraitFor::Controller::CAPTCHA - authenticate human by create and validate captcha

VERSION

version 1.2

SYNOPSIS

In your controller

    package MyApp::Controller::MyController;
    use Moose;
    use namespace::autoclean;

    BEGIN { extends 'Catalyst::Controller' }
    with 'Catalyst::TraitFor::Controller::CAPTCHA';

    sub captcha_image  : Local :Args(0) {
        my ( $self, $c ) = @_;
        $c->forward('generate_captcha');
    }

    #Now <img src="/captcha_image" /> will have captcha and 
    #<input name="captcha_text" type="text"> will prompt user to enter captcha text 
    #and this should be embed into your form that needs to be validated.

    sub form_post : Local {
        my ($self,$c) = @_;
    
        my $posted_string = $c->req->body_params('captcha_text');    

        if ( $c->forward('validate_captcha',[$posted_string]) ) {
            #Allowed 
        }else {
            #Not Allowed 
        }
    }

    1;

SUMMARY

This Catalyst::Controller role provides Private methods that deal with the generation and validation of captcha.

CONFIGURATION

In MyApp.pm (or equivalent in config file):

 __PACKAGE__->config->{captcha} = {
    session_name => 'captcha_string',
    #Refer GD::SecurityImage for additonal configuration  
    gd_config => {
        width => 100,
        height => 50,
        lines => 5,
        gd_font => 'giant',
    },
    create => [qw/normal rect/],
    particle => [10],
    out => {force => 'jpeg'}
};

DESCRIPTION

This controller's private methods will create and validate captcha.This module is based/altered from Catalyst::Plugin::Captcha because that shouldn't be a Catalyst::Plugin.Now it is a base controller like Catalyst::TraitFor::Controller::reCAPTCHA.It uses GD::SecurityImage and requires a session plugins like Catalyst::Plugin::Session.

METHODS

generate_captcha : Private

This will create and respond the captcha.

 $c->forward('generate_captcha');

validate_captcha : Private

This will validate the given string against the Captcha image that has been generated earlier.

 if ( $c->forward('validate_captcha',[$posted_string]) ) {
   #do something based on the CAPTCHA passing
 }

REPOSITORY

https://github.com/Virendrabaskar/Catalyst-TraitFor-Controller-CAPTCHA

SEE ALSO

ACKNOWLEDGEMENTS

This module is almost copied from Diego Kuperman Catalyst::Plugin::Captcha.

AUTHOR

Baskar Nallathambi <baskarmusiri@gmail.com>,<baskar@exceleron.com>

COPYRIGHT AND LICENSE

This is free module.You can do anything to this module under the same terms as the Perl 5 programming language system itself.