This module adds Google reCaptcha to SilverStripe 4.x, which you can use in your custom forms.
composer require meldgaard/silverstripe-recaptcha
Put your keys and spamscore in your app/_config/app.yml
Meldgaard\SilverStripe\ReCaptcha\Form\RecaptchaField:
siteKey: 'Insert site key'
secretKey: 'Insert secret key'
spamLevel: 0-100
In config you set the spamscore to a value from 0 to 100. Recommended value to start is 50.
Then you can use it in your forms, by using RecaptchaForm
instead of `Form
public function HelloForm()
{
$fields = new FieldList(
TextField::create('Name', _t('HelloForm.Name', 'Name')),
TextField::create('Email', _t('HelloForm.Email', 'E-Mail')),
TextareaField::create('Message', _t('HelloForm.Message', 'Message')),
);
$actions = new FieldList(
FormAction::create('doSayHello')->setTitle(_t('HelloForm.Submit', 'Send'))
);
$required = new RequiredFields('Name', 'Email', 'Message');
$form = new RecaptchaForm($this, 'HelloForm', $fields, $actions, $required);
return $form;
}