[opencms-dev] Friendly Captcha

Schliemann, Kai K.Schliemann at comundus.com
Fri Dec 9 14:38:47 CET 2022


Hi Jochen,

great answer. Thanks a lot. We will give it a try.
Have a nice weekend.
Best regards
Kai

Von: opencms-dev <opencms-dev-bounces at opencms.org> Im Auftrag von Jochen Graf via opencms-dev
Gesendet: Freitag, 9. Dezember 2022 13:30
An: opencms-dev at opencms.org
Cc: Jochen Graf <j.graf at alkacon.com>
Betreff: Re: [opencms-dev] Friendly Captcha


Hi,

you can see the integration of an external captcha provider (e.g. Friendly Captcha) in the Mercury template.

There are two places in the Java code where the external captcha provider widget has to be initialized instead of the standard Mercury captcha. The first place is for the case the captcha appears directly below the form, the second is for the case the captcha appears on the form check page (if activated in the form configuration):

https://github.com/alkacon/mercury-template/blob/master/alkacon.mercury.webform/src/alkacon/mercury/webform/fields/CmsCaptchaField.java#L123
https://github.com/alkacon/mercury-template/blob/master/alkacon.mercury.webform/src/alkacon/mercury/webform/CmsFormHandler.java#L1498 (check page)

Initialization in Mercury webform is done by means of a stringtemplate attribute called "captchawidget". See the two places in the string templates where the captcha widget is used instead of the standard Mercury captcha:

https://github.com/alkacon/mercury-template/blob/master/alkacon.mercury.webform/resources/system/modules/alkacon.mercury.webform/resources/formtemplates/default.st#L95
https://github.com/alkacon/mercury-template/blob/master/alkacon.mercury.webform/resources/system/modules/alkacon.mercury.webform/resources/formtemplates/default.st#L428 (check page)

The server-side verification of a captcha solution happens here:

https://github.com/alkacon/mercury-template/blob/master/alkacon.mercury.webform/src/alkacon/mercury/webform/fields/CmsCaptchaField.java#L222

In order to make the captcha widget and the server-side captcha verification of an external provider work, you have to implement an interface containing a "getWidgetMarkup" and "verifySolution" method:

https://github.com/alkacon/mercury-template/blob/master/alkacon.mercury.template/src/alkacon/mercury/template/captcha/I_CmsCaptchaProvider.java

For FriendlyCaptcha, "getWidgetMarkup" would return a standard FriendlyCaptcha HTML markup including a "data-callback" attribute. The FriendlyCaptcha callback function would copy the captcha solution into the Mercury hidden input field named "captchaphrase": <input type="hidden" name="captchaphrase{uuid}" /> which is the one that is read and evaluated on the server.

"verifySolution" would simply implement an HTTP client that sends the captcha solution read from the hidden input "captchaphrase" to the FriendlyCaptcha verification API.

Hope this helps

Jochen


Am 07.12.22 um 13:46 schrieb Schliemann, Kai via opencms-dev:
Hi list,

did any of you already implement the Friendly Captcha solution (https://friendlycaptcha.com) and wants to share the code here?
Or give some hints on how difficult/easy it is to implement the solution with the Alkacon webform modul.
Thanks in advance.

Best regards
Kai




_______________________________________________

This mail is sent to you from the opencms-dev mailing list

To change your list options, or to unsubscribe from the list, please visit

https://lists.opencms.org/mailman/listinfo/opencms-dev







--

Alkacon Software GmbH & Co. KG  - The OpenCms Experts

http://www.alkacon.com - http://www.opencms.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opencms.org/pipermail/opencms-dev/attachments/20221209/1d34bba4/attachment.htm>


More information about the opencms-dev mailing list