xngageoro/recaptcha

Recaptcha For ORO Customized By Xngage

Installs: 27

Dependents: 0

Suggesters: 0

Security: 0

Type:symfony-src

dev-master 2022-03-30 15:01 UTC

This package is not auto-updated.

Last update: 2024-04-25 22:35:45 UTC


README

This bundle adds Google ReCAPTCHA protection for various Oro features.

Features which can currently be protected are:

  • Registration Form
  • Contact Us Form

Extends the Symfony EWZRecaptchaBundle by excelwebzone

Requirements

This bundle supports the following Oro Platform versions:

  • Oro Platform v3.x

    • Support for this version is on the "v3.x" branch
  • Oro Platform v4.1.x

    • Support for this version is on the "v4.1.x" branch
  • Oro Platform v4.2.x

    • Support for this version is on the "v4.2.x" branch

The Master branch will always track support for the latest released Oro Platform version.

Installation and Usage

NOTE: Adjust instructions as needed for your local environment

  1. Install via Composer:
     composer require friendsoforo/oro-recaptcha-bundle
    
  2. Update your config.yml:

     # app/config/config.yml
        
     google_recaptcha:
         public_key:  here_is_your_public_key
         private_key: here_is_your_private_key
       
         # Not needed as "%kernel.default_locale%" is the default value for the locale key
         # locale_key:  %kernel.default_locale%
       
         # etc. Refer to the google_recaptcha package for more information.
       
     # optional, modify key values if you need to override this bundle's default settings 
     xngage_recaptcha:
         settings:
             #theme: light
             #size: normal
             #protect_registration: true
             #protect_contact_form: true
    
  3. Purge Oro cache:
     php bin/console cache:clear --env=prod
    
  4. Login to Oro Admin
  5. Navigate to System Configuration => Integrations => ReCAPTCHA
  6. Configure the ReCAPTCHA widget and enabled/disable Protected Features
  7. Save the configuration and verify that it is now appearing on the frontend website

Testing in Development

Copy the config.yml values into config_dev.yml and replace the public/private keys with the test keys provided by Google: https://developers.google.com/recaptcha/docs/faq#id-like-to-run-automated-tests-with-recaptcha-what-should-i-do

The widget should render on the forms, but will be overlaid with the text:

"This reCAPTCHA is for testing purposes only. Please report to the site admin if you are seeing this. "

Adding to new Form Types

  1. Create a new Form Type Extension which extends HackOro\RecaptchaBundle\Form\Extension\AbstractRecaptchaTypeExtension

     <?php
     namespace Acme\CustomBundle\Form\Extension;
        
     use Acme\CustomBundle\Form\Type\CustomPageType;
        
     class CustomPageTypeExtension extends AbstractRecaptchaTypeExtension
     {
         public function getExtendedType()
         {
             // The Form Type we are extending
             return CustomPageType::class;
         }
        
         /**
          * Protect the Custom Page Form?
          * @return boolean
          */
         public function isProtected()
         {
             // Replace this with a configuration option if needed
             return true;
         }
     }
    
  2. Register the Form Type Extension via services.yml:
     xngage_recaptcha.form.registration_form_type_extension:
         class: Acme\CustomBundle\Form\Extension\CustomPageTypeExtension
         calls:
             - [setConfigManager, ['@oro_config.user']]
         tags:
             - { name: form.type_extension, extended_type: Acme\CustomBundle\Form\Type\CustomPageType }
    

Roadmap / Remaining Tasks

  • [ ] Add support for "Invisible" ReCAPTCHA v2
  • [ ] Add support for ReCAPTCHA v3
  • [ ] Add ability to customize ReCAPTCHA v3 score threshold on a per-feature basis
  • [ ] Add ability to set public/private keys via Oro Configuration instead of YAML files

Licence

MIT - MIT License