NAME

   Mojolicious::Plugin::ReCAPTCHAv2Async - Adds async recaptcha_verify_p
   helper to Mojolicious ReCAPTCHAv2 plugin.

VERSION

   version 0.001

SYNOPSIS

     use Mojolicious::Lite;

     plugin(
       ReCAPTCHAv2Async => {
         sitekey => 'site-key-embedded-in-public-html',
         secret  => 'key-used-in-internal-verification-requests',
         ... # and all the rest from ReCAPTCHAv2
       }
     );

     # later

     # assembling website:
     $c->stash( captcha => app->recaptcha_get_html );
     # now use stashed value in your HTML template, i.e.: <form..>...<% $captcha %>...</form>

     # on incoming request:
     sub form_handler {
       my $c = shift;

       $c->render_later;

       $c->recaptcha_verify_p->then(
         sub {
           ...
           $c->render('success');
         }
       )->catch(
         sub {
           my @errors = @_;
           if (@errors) {
             $c->reply->exception(join "\n", @errors);
           }
           else {
             $c->render(text => "no bots allowed", status 403);
           }
         }
       );
     }

     # or in an under:
     under sub {
       my $c = shift;

       $c->render_later;

       $c->recaptcha_verify_p->then(
         sub { $c->continue }
       )->catch(
         sub { $c->reply->exception(...)  }
       );

       return undef;
     };

DESCRIPTION

   This subclass of Mojolicious::Plugin::ReCAPTCHAv2 adds a helper that
   returns a Mojo::Promise, allowing you to use it in a non-blocking/async
   manner.

HELPERS

   Mojolicious::Plugin::ReCAPTCHAv2Async inherits all helpers from
   Mojolicious::Plugin::ReCAPTCHAv2 and adds the following ones:

recaptcha_verify_p

   This helper returns a Mojo::Promise that will resolve if the reCAPTCHA
   service believes that the challenge was solved by a human, and it will
   reject if there was a failure. The failure can be caused either by an
   error or because the service believes the challenge was attempted by a
   bot.

   In case of errors, those will be passed through the rejection. See the
   recaptcha_get_errors helper for more information about the possible
   errors.

SEE ALSO

   Mojolicious

   Mojolicious::Plugin::ReCAPTCHAv2

AUTHOR

   Andreas Guldstrand <[email protected]>

COPYRIGHT AND LICENSE

   This software is Copyright (c) 2018 by Andreas Guldstrand.

   This is free software, licensed under:

     The MIT (X11) License