Community contributed extensions

Recaptcha module for Play!

Integrate challenge-response reCaptcha tests in 2 minutes.

What is a Captcha?

A Captcha is a type of challenge-response test used in computing to ensure that the response is not generated by a computer. Captcha are typically used to fight spam and validate that a human is using the system.

(sample)

Features

Prerequisites

The modules requires the recapctha public/private key for your domain.

  1. Please go to http://www.google.com/recaptcha
  2. Register and create a site for your domain
  3. Write down the generated public and private keys

Installation

  1. run 'play install recaptcha' and let Play! install the module for you
  2. open your application conf/application.conf and add
    1. module.recaptcha=${play.path}/modules/recaptcha-{version}
    2. ugot.recaptcha.privateKey=YOUR_RECAPTCHA_PRIVATE_KEY
    3. ugot.recaptcha.publicKey=YOUR_RECAPTCHA_PUBLIC_KEY

Make sure to replace {version} and KEYS with their appropriate values

How to Use

Well it’s kind of easy, the module offers two integration points:

  1. a tag to render the captcha: #{ugot.recaptcha /}
  2. an annotation to validate the result: @Recaptcha

Generating the captcha

Play being an MVC framework, we need to define an action in the controller and its associated page.
Edit file app/controller/Application.java as follows:


public class Application extends Controller {
public static void register() {
render();
}
}

Create a file `app/view/Application/register.html`

bc.
#{extends ‘main.html’ /}
#{set title:‘Test reCaptcha’ /}
#{form @save()}
Your form data
<p>#{ugot.recaptcha theme:“red”, tabindex:“2”/}</p>
#{ifErrors}
<ul>
#{errors}
<li>${error}</li>
#{/errors}
</ul>
#{/ifErrors}
<p><input type=“submit” value=“Register me, I am human” /></p>
#{/form}

Validating the captcha

Edit file app/controller/Application.java and add the following:


import ugot.recaptcha.Recaptcha;

public class Application extends Controller { public static void save(@Recaptcha String captcha) { if(validation.hasErrors()) { System.out.println(“ERRORS found - invalid captcha”); params.flash(); validation.keep(); } else { System.out.println(“There are no errors, the catcha was validated”); } // no matter what, redisplay the same page register(); } }

Testing the captcha

Start play and launch a browser to http://localhost:9000/Application/register

Done!

Tag parameters

The ugot.recaptcha tag takes the following parameters

theme: The theme to use. Possible values are:red (default), white, blackglass, clean

tabindex: Sets a tabindex for the reCAPTCHA text box. If other elements in the form use a tabindex, this should be set so that navigation is easier for the user

lang: A two character country code. By default the module will ask Play to provide the negotiated language. possible values are: en,nl,fr,de,pt,ru,es,tr

See the reCaptcha documentation for more details.

Credits

This module is based on the Recaptcha java library.
Author: Olivier Refalo