Mojolicious-Plugin-Captcha-reCAPTCHA

 view release on metacpan or  search on metacpan

lib/Mojolicious/Plugin/Captcha/reCAPTCHA.pm  view on Meta::CPAN

$VERSION = eval $VERSION;

sub register {
    my $self = shift;
    my $app  = shift;
    my $conf = shift || {};

    $app->log->debug("Usage of Mojolicious::Plugin::Captcha::reCAPTCHA is deprecated; you should consider switching to Mojolicious::Plugin::ReCAPTCHAv2");

    die ref($self), ": need private and public key\n"
        unless $conf->{private_key} and $conf->{public_key};

    $app->attr(
        'recaptcha_obj' => sub {
            Captcha::reCAPTCHA->new;
        },
    );

    $app->attr( recaptcha_private_key => sub { $conf->{private_key} } );
    $app->attr( recaptcha_public_key  => sub { $conf->{public_key} } );
    $app->attr( recaptcha_use_ssl     => sub { $conf->{use_ssl} } );
    $app->attr( recaptcha_options     => sub { $conf->{options} } );

    $app->helper( recaptcha => sub { return shift->app->recaptcha_obj } );
    $app->helper(
        use_recaptcha => sub {
            my $self = shift;
            $self->stash( recaptcha_html => $self->recaptcha_html(@_) );
            return;

lib/Mojolicious/Plugin/Captcha/reCAPTCHA.pm  view on Meta::CPAN

            }
            return Mojo::ByteStream->new(
				$self->recaptcha->get_html( $self->app->recaptcha_public_key, $err, $use_ssl, $options )
			);
        }
    );
    $app->helper(
        validate_recaptcha => sub {
            my ( $self, $params ) = @_;

            my $result = $self->recaptcha->check_answer( $self->app->recaptcha_private_key,
                                                         $self->tx->remote_address,
                                                         $params->{recaptcha_challenge_field},
                                                         $params->{recaptcha_response_field},
            );

            if ( !$result->{is_valid} ) {
                $self->stash( recaptcha_error => $result->{error} );
                return 0;
            }
            return 1;

lib/Mojolicious/Plugin/Captcha/reCAPTCHA.pm  view on Meta::CPAN

=head1 SYNOPSIS

Provides a L<Captcha::reCAPTCHA> object in your Mojolicious app.

    use Mojolicious::Plugin::Captcha::reCAPTCHA;

    sub startup {
        my $self = shift;

        $self->plugin('Captcha::reCAPTCHA', { 
            private_key => 'the_public_key',
            public_key  => 'your_private_key',
            use_ssl     => 1,
            options     => { theme => 'white' },
        });
    }

C<private_key> and C<public_key> are mandatory, while C<use_ssl> and C<options> are optional.
Unless you have a specific reason to set a certain global value for C<use_ssl> you should 
probably just let the plugin decide when to use HTTPS requests.

In your mojolicious controller you can control everything by yourself by directly
invoking the C<get_html()> method of the L<Captcha::reCAPTCHA> object:

    $self->stash(
        recaptcha_html => $self->recaptcha->get_html( $public_key [, $error [, $use_ssl [, $options ] ] ] ),
    );

Following the same pattern you can also directly invoke C<check_answer()>:

    my $result = $self->recaptcha->check_answer(
        $private_key,
        $ip,
        $value_of_challenge_field,
        $value_of_response_field,
    );

Or you can use the new helpers.

=head1 NAME

Mojolicious::Plugin::Captcha::reCAPTCHA - use Captcha::reCAPTCHA in Mojolicious apps



( run in 0.602 second using v1.01-cache-2.11-cpan-4d50c553e7e )