Skip to content

FriendsOfOro/OroRecaptchaBundle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Oro ReCAPTCHA Bundle

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
  • Oro Platform v5.x

    • Support for this version is on the "v5.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
    
    ewz_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 ewz_recaptcha package for more information.
  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:
    hack_oro_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