GithubHelp home page GithubHelp logo

silverstripe-recaptcha's Introduction

Silverstripe Recaptcha

This module adds Google reCaptcha to SilverStripe 4.x, which you can use in your custom forms.

Installation

composer require meldgaard/silverstripe-recaptcha

Usage

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

Spamscore

In config you set the spamscore to a value from 0 to 100. Recommended value to start is 50.

Form setup

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;
}

TODO

  • Update module to handle v2 of recaptcha
  • Update module to give possibility to hide badge in v3

silverstripe-recaptcha's People

Contributors

acndr avatar cmeldgaard avatar sunnysideup avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

silverstripe-recaptcha's Issues

JS doesn't work when extending RecaptchaForm

When implementing this module into my project I've found that it doesn't work when my form extends RecaptchaForm. I have a lot of functionality in my form so I typically extend the form and contain the functionality in there instead of the controller, like so:

class CustomForm extends Form
{
   ....
}

However when applying the same to this module, like this:

class CustomForm extends RecaptchaForm
{
   ....
}

I get a javascript error Cannot read property 'addEventListener' of null. This is due to the fact the event listener is bound to getElementById('RecaptchaForm_'+'ContactForm') which is hard coded to assume the form class will be RecaptchaForm . However as I've extended this class it would need to account for the new class name - in this case CustomForm_.

Can you extend this module to account for the class name?

spamLevel value

Hi,
Could you please tell me, if I'm getting spam through my form should I increase my spamLevel value or make is lower? I've started off at 50 and I'm getting some spam.

Great and valuable addon.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.