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 )