Add honeypot field for spambot

[MAILPOET-1014]
This commit is contained in:
Pavel Dohnal
2017-08-15 14:33:45 +02:00
parent f7b1016e63
commit 18f208cf47
5 changed files with 47 additions and 13 deletions

View File

@ -66,6 +66,11 @@ class Subscribers extends APIEndpoint {
APIError::BAD_REQUEST => __('Please specify a valid form ID.', 'mailpoet')
));
}
if(!empty($data['email'])) {
return $this->badRequest(array(
APIError::BAD_REQUEST => __('Please leave the first field empty.', 'mailpoet')
));
}
$segment_ids = (!empty($data['segments'])
? (array)$data['segments']
@ -74,6 +79,8 @@ class Subscribers extends APIEndpoint {
$segment_ids = $form->filterSegments($segment_ids);
unset($data['segments']);
$data = $this->deobfuscateFormPayload($data);
if(empty($segment_ids)) {
return $this->badRequest(array(
APIError::BAD_REQUEST => __('Please select a list.', 'mailpoet')
@ -115,6 +122,18 @@ class Subscribers extends APIEndpoint {
}
}
private function deobfuscateFormPayload($data) {
$result = array();
foreach($data as $key => $value) {
if(strpos($key, 'form_field_') === 0) {
$result[base64_decode(substr($key, 11))] = $value;
} else {
$result[$key] = $value;
}
}
return $result;
}
function save($data = array()) {
if(empty($data['segments'])) {
$data['segments'] = array();