Index: acct_mgr/register.py =================================================================== --- acct_mgr/register.py (revision 14432) +++ acct_mgr/register.py (working copy) @@ -19,7 +19,7 @@ from trac import perm, util from trac.core import Component, TracError, implements -from trac.config import Option +from trac.config import Option, BoolOption from trac.env import open_environment from trac.web import auth, chrome from trac.web.main import IRequestHandler, IRequestFilter @@ -149,7 +149,17 @@ elif password != req.args.get('password_confirm'): raise RegistrationError(N_("The passwords must match.")) + if self.config.getbool("account-manager", "use_recaptcha"): + # captcha check + from recaptcha.client import captcha + challenge = req.args.get("recaptcha_challenge_field") + response = req.args.get("recaptcha_response_field") + private_key = self.config.get("account-manager", "recaptcha_private_key") + recaptcha_response = captcha.submit(challenge, response, private_key, req.remote_addr) + if not recaptcha_response.is_valid: + raise RegistrationError(N_("You did not enter the ReCaptcha verification correctly. Please try again.")) + class BotTrapCheck(GenericRegistrationInspector): """A collection of simple bot checks. @@ -336,6 +346,10 @@ implements(chrome.INavigationContributor, IRequestHandler) + use_recaptcha = BoolOption("account-manager", "use_recaptcha", "false") + recaptcha_public_key = Option("account-manager", "recaptcha_public_key") + recaptcha_private_key = Option("account-manager", "recaptcha_private_key") + def __init__(self): self.acctmgr = AccountManager(self.env) self._enable_check(log=True) @@ -446,6 +460,13 @@ data.update(f_data) data['required_fields'] = fragments['required'] data['optional_fields'] = fragments['optional'] + + if self.use_recaptcha: + from recaptcha.client import captcha + data["captcha"] = captcha.displayhtml(self.recaptcha_public_key) + else: + data["captcha"] = "no captcha configured" + return 'register.html', data, None Index: acct_mgr/templates/register.html =================================================================== --- acct_mgr/templates/register.html (revision 14432) +++ acct_mgr/templates/register.html (working copy) @@ -57,6 +57,9 @@ ${field} +