diff --git a/packages/cms/lib/modules/resource-form-widgets/index.js b/packages/cms/lib/modules/resource-form-widgets/index.js index 44e4188b9..089a012d5 100644 --- a/packages/cms/lib/modules/resource-form-widgets/index.js +++ b/packages/cms/lib/modules/resource-form-widgets/index.js @@ -95,7 +95,7 @@ module.exports = { { name: 'submitting', label: 'Submitting', - fields: ['buttonTextSubmit', 'buttonTextSave', 'buttonTextConcept'] + fields: ['buttonTextSubmit', 'buttonTextSave', 'buttonTextConcept', 'useCaptcha'] }, { name: 'agreed', diff --git a/packages/cms/lib/modules/resource-form-widgets/lib/fields.js b/packages/cms/lib/modules/resource-form-widgets/lib/fields.js index 9a84661ca..a4ef224af 100644 --- a/packages/cms/lib/modules/resource-form-widgets/lib/fields.js +++ b/packages/cms/lib/modules/resource-form-widgets/lib/fields.js @@ -860,6 +860,23 @@ const fields = [ type: 'string', label: 'Text for button to save', }, + + { + name: 'useCaptcha', + type: 'boolean', + label: 'Use captcha on resource form when made available to all users (only when viewable by everyone)', + choices: [ + { + value: true, + label: "Yes" + }, + { + value: false, + label: "No" + }, + ], + def: true + }, { name: 'buttonTextConcept', type: 'string', diff --git a/packages/cms/lib/modules/resource-form-widgets/lib/submit.js b/packages/cms/lib/modules/resource-form-widgets/lib/submit.js index eeafa6e97..576cc6292 100644 --- a/packages/cms/lib/modules/resource-form-widgets/lib/submit.js +++ b/packages/cms/lib/modules/resource-form-widgets/lib/submit.js @@ -59,6 +59,22 @@ module.exports = async function(self, options) { delete data.extraData; } + if(req.body && req.body.areYouABot) { + const captchData = req.session.captcha; + + console.log({captchData}); + const isCaptchaValid = captchData && captchData.text && captchData.text === req.body.areYouABot; + + if (!isCaptchaValid) { + return res.status(403).json({ + 'msg' : 'The captcha code is not correct, try again or refresh the captcha.' + }); + } + + // clean up key before we send it to the api + delete req.body.areYouABot; + } + const options = { method: req.body.resourceId ? 'PUT' : 'POST', uri: req.body.resourceId ? `${postUrl}/${req.body.resourceId}` : postUrl, diff --git a/packages/cms/lib/modules/resource-form-widgets/views/includes/fields/captcha.html b/packages/cms/lib/modules/resource-form-widgets/views/includes/fields/captcha.html new file mode 100644 index 000000000..eb040e5de --- /dev/null +++ b/packages/cms/lib/modules/resource-form-widgets/views/includes/fields/captcha.html @@ -0,0 +1,25 @@ +
+

{{ data.widget.labelCaptcha if data.widget.labelCaptcha else 'Captcha' }}

+
+ + +
+ + + refresh + + +
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/packages/cms/lib/modules/resource-form-widgets/views/includes/static-idea-form.html b/packages/cms/lib/modules/resource-form-widgets/views/includes/static-idea-form.html index 5314489f3..11e5e95fd 100644 --- a/packages/cms/lib/modules/resource-form-widgets/views/includes/static-idea-form.html +++ b/packages/cms/lib/modules/resource-form-widgets/views/includes/static-idea-form.html @@ -165,6 +165,10 @@

{{ data.widget.labelPhone if data.widget.labelPhone else 'Telefoonnummer (op {% endif %} + {% if data.widget.useCaptcha and data.widget.formVisibility == 'always' %} + {% include 'includes/fields/captcha.html' %} + {% endif %} + {% if data.hasModeratorRights and data.widget.displayBudget %}

Budget