I am adding a new captcha component, it uses jcaptcha-2.0-alpha1 and supports
image captchas and sound captchas (freetts jars must be added for sound captcha support)
There is a captcha plugin in xwiki-core which makes the core depend on
jcaptcha-all-1.0-RC3.
jcaptcha-all-1.0-RC3 causes conflicts when getting classes from jcaptcha-2.0.
The plugin in querstion:
http://svn.xwiki.org/svnroot/xwiki/platform/core/trunk/xwiki-core/src/main/…
Here's my +1 for removing it entirely, breaking backward compatibility, lightening
xwiki-core,
and making the core no longer depend on jcaptcha.
You may review a patch for removing the plugin here:
http://jira.xwiki.org/jira/secure/attachment/16508/XWIKI-4779-removeJcaptch…
To provide velocity access to the captcha component for checking the results of the
captcha,
I would like to add a VelocityContextInitializer which will add a binding called
$captchaservice
which will provide 3 methods:
/**
* If this is false, the captcha system will still work.
* It is for velocity scripts to determine whether captchas are needed.
*
* @return Is the captcha service enabled in the configuration.
*/
boolean isEnabled()
/** @return a List of the names of all registered classes implementing {@link
org.xwiki.captcha.CaptchaVerifier}. */
public List<String> listCaptchaNames()
/**
* Get a {@link org.xwiki.captcha.CaptchaVerifier} from the service.
*
* @param captchaName The name of the type of captcha, use {@link #listCaptchaNames()} for
a list
* @return A captcha object which can be used to check a specific answer for a given
challange
* @throws Exception If the named captcha doesn't exist.
*/
public CaptchaVerifier getCaptchaVerifier(String captchaName) throws Exception
I realize throwing an Exception to velocity always results in a stack trace but I see it
as the lesser evil to
returning a non-functional CaptchaVerifier which always returns false. Also I see no use
case where the name of
the captcha is not given in hardcoded velocity so this Exception is only for the velocity
developers.
Here's my +1 for adding this as well.
Caleb James DeLisle