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 .= '
+
'; }