diff --git a/assets/js/src/public.js b/assets/js/src/public.js
index e8270dc2a0..f82089f7c0 100644
--- a/assets/js/src/public.js
+++ b/assets/js/src/public.js
@@ -13,8 +13,11 @@ function ( // eslint-disable-line func-names
var sitekey = $(this).attr('data-sitekey');
var container = $(this).find('> .mailpoet_recaptcha_container').get(0);
var field = $(this).find('> .mailpoet_recaptcha_field');
- var widgetId = window.grecaptcha.render(container, { sitekey: sitekey, size: 'compact' });
- field.val(widgetId);
+ var widgetId;
+ if (sitekey) {
+ widgetId = window.grecaptcha.render(container, { sitekey: sitekey, size: 'compact' });
+ field.val(widgetId);
+ }
});
};
@@ -66,7 +69,7 @@ function ( // eslint-disable-line func-names
}).join('
')
).show();
}).done(function (response) { // eslint-disable-line func-names
- if (window.grecaptcha) {
+ if (window.grecaptcha && formData.recaptcha) {
window.grecaptcha.reset(formData.recaptcha);
}
return response;
@@ -88,7 +91,7 @@ function ( // eslint-disable-line func-names
// reset validation
parsley.reset();
// reset captcha
- if (window.grecaptcha) {
+ if (window.grecaptcha && formData.recaptcha) {
window.grecaptcha.reset(formData.recaptcha);
}
diff --git a/lib/API/JSON/v1/Subscribers.php b/lib/API/JSON/v1/Subscribers.php
index 11a6c5ef83..7fde90d968 100644
--- a/lib/API/JSON/v1/Subscribers.php
+++ b/lib/API/JSON/v1/Subscribers.php
@@ -90,17 +90,18 @@ class Subscribers extends APIEndpoint {
));
}
- if(!empty($recaptcha['enabled']) && !isset($data['recaptcha'])) {
+ if(!empty($recaptcha['enabled']) && empty($data['recaptcha'])) {
return $this->badRequest(array(
APIError::BAD_REQUEST => __('Please check the captcha.', 'mailpoet')
));
}
if(!empty($recaptcha['enabled'])) {
+ $res = empty($data['recaptcha']) ? $data['recaptcha-no-js'] : $data['recaptcha'];
$res = wp_remote_post('https://www.google.com/recaptcha/api/siteverify', array(
'body' => array(
'secret' => $recaptcha['secret_token'],
- 'response' => $data['recaptcha']
+ 'response' => $res
)
));
if(is_wp_error($res)) {
@@ -125,7 +126,6 @@ class Subscribers extends APIEndpoint {
$segment_ids = $form->filterSegments($segment_ids);
unset($data['segments']);
-
if(empty($segment_ids)) {
return $this->badRequest(array(
APIError::BAD_REQUEST => __('Please select a list.', 'mailpoet')
diff --git a/lib/Form/Renderer.php b/lib/Form/Renderer.php
index a9f4025812..6910efc389 100644
--- a/lib/Form/Renderer.php
+++ b/lib/Form/Renderer.php
@@ -50,6 +50,20 @@ class Renderer {
$site_key = Setting::getValue('re_captcha.site_token');
$html .= '