Giter Site home page Giter Site logo

hendurhance / laracaptcha Goto Github PK

View Code? Open in Web Editor NEW
14.0 2.0 0.0 75 KB

A Laravel package to seamlessly use hCapthca or reCaptcha v2 or v3 on your forms or RESTful APIs

License: MIT License

PHP 100.00%
captcha data-validation form-validation google-recaptcha google-recaptcha-v2 google-recaptcha-v3 hcaptcha hcaptcha-api laravel laravel-captcha

laracaptcha's Introduction

LaraCaptcha

Latest Version on Packagist Total Downloads GitHub Actions

A Laravel package to seamlessly integrate Google reCAPTCHA v3, v2 or hCAPTCHA into your application forms or Restful API.

Image 1 hCaptcha Image 2 reCaptcha

Supported Captcha Services

Service Version Type Supported
Google reCAPTCHA v3 - ✅ Yes
Google reCAPTCHA v2 Checkbox ✅ Yes
Google reCAPTCHA v2 Invisible ✅ Yes
hCAPTCHA - Checkbox ✅ Yes
hCAPTCHA - Invisible ✅ Yes

Installation

Note: This package requires PHP 7.4 or higher.

You can install the package via composer:

composer require martian/laracaptcha

Register Service Provider

Add the following to the providers array in config/app.php:

Martian\LaraCaptcha\Providers\LaraCaptchaServiceProvider::class,

Publish Configuration File

Publish the configuration file using the following command:

php artisan vendor:publish --provider="Martian\LaraCaptcha\Providers\LaraCaptchaServiceProvider"

Configuration

The configuration file is located at config/laracaptcha.php. The following options are available:

reCAPTCHA v2 Configuration

  • In order to use reCAPTCHA you need to register your site for an API key pair. To use reCaptcha v2 Checkbox, select Challenge (v2) > I'm not a robot Checkbox. To use the invisible reCAPTCHA, select Challenge (v2) > Invisible reCAPTCHA badge. The API key pair consists of a site key and secret key. Set the default option to recaptcha in config/laracaptcha.php:

    'default' => 'recaptcha',
  • Change the version option to v2 to use reCAPTCHA v2:

    'drivers' => [
        'recaptcha' => [
            ...
            'version' => 'v2',
            ...
        ],
    ],
  • Add RECAPTCHA_SITE_KEY and RECAPTCHA_SECRET_KEY to your .env file:

    RECAPTCHA_SITE_KEY=your-site-key
    RECAPTCHA_SECRET_KEY=your-secret-key

reCAPTCHA v3 Configuration

  • In order to use reCAPTCHA you need to register your site for an API key pair. To use reCaptcha v3, select reCAPTCHA v3. The API key pair consists of a site key and secret key. Set the default option to recaptcha in config/laracaptcha.php:

    'default' => 'recaptcha',
  • Change the version option to v3 to use reCAPTCHA v3:

    'drivers' => [
        'recaptcha' => [
            ...
            'version' => 'v3',
            ...
        ],
    ],
  • Add RECAPTCHA_SITE_KEY, RECAPTCHA_SECRET_KEY and RECAPTCHA_SITE_URL to your .env file:

    RECAPTCHA_SITE_KEY=your-site-key
    RECAPTCHA_SECRET_KEY=your-secret-key
    RECAPTCHA_SITE_URL=${APP_URL}

hCAPTCHA Configuration

  • In order to use hCAPTCHA you need to register your site for an API key pair. The API key pair consists of a site key and secret key. Set the default option to hcaptcha in config/laracaptcha.php:

    'default' => 'hcaptcha',
  • Add HCAPTCHA_SITE_KEY and HCAPTCHA_SECRET_KEY to your .env file:

    HCAPTCHA_SITE_KEY=10000000-ffff-ffff-ffff-000000000001
    HCAPTCHA_SECRET_KEY=0x0000000000000000000000000000000000000000

These are the test keys we use by default. You should not use them in production!

Usage

To display captcha in your form, follow the steps below according to the captcha configuration you are using.

reCAPTCHA v2 Checkbox & Invisible

Initializing JavaScript

Add the following to the <head> section of your page:

{!! LaraCaptcha::script() !!}

With other options in Google reCaptcha v2 Checkbox dox

{!! LaraCaptcha::script('yourCallbackFunction', 'explicit', 'en') !!}

Note: The first parameter is the callback function name, the second is the rendering mode (explicit or onload), and the third is the language code from doc

Displaying Captcha Widget - Checkbox

Add the following to your form:

{!! LaraCaptcha::display() !!}

With other options in Google reCaptcha v2 Checkbox dox

{!! LaraCaptcha::display(['data-theme' => 'dark']) !!}

Note: The parameter is an array of attributes for the widget

Displaying Captcha Widget - Invisible

Add the following to your form:

{!! LaraCaptcha::displayInvisibleButton('formIdentifier', 'Submit Button',['data-size' => 'invisible']) !!}

Note: The first parameter is the form identifier, the second is the button label (Submit Button), and the third is an array of attributes for the widget, see doc. Add the formIdentifier value as the id in the form element

Validating Captcha

Add the following to your validation rules:

'g-recaptcha-response' => 'recaptcha',

You can also use the rule in the Validator facade:

$validator = Validator::make($request->all(), [
    'g-recaptcha-response' => 'recaptcha',
]);

Add Custom Validation Message

Add the following to your validation messages:

'g-recaptcha-response.recaptcha' => 'Captcha verification failed.',

Or you can change the default message in config/laracaptcha.php:

'error_message' => 'Captcha verification failed.',

reCAPTCHA v3

Initializing JavaScript

Add the following to the <head> section of your page:

{!! LaraCaptcha::script() !!}

With other options in Google reCaptcha v3 dox

{!! LaraCaptcha::script('yourCallbackFunction', 'explicit', 'en') !!}

Displaying Captcha Widget

Add the following to your form:

{!! LaraCaptcha::display() !!}

With other options in Google reCaptcha v3 dox

{!! LaraCaptcha::display(['action' => 'homepage', 'custom_validation' => 'yourCustomFunction', 'recaptcha_input_identifier' => 'yourReCaptchaInputId']) !!}

Note: The parameter is an array of attributes for the widget, see doc for actions type

hCAPTCHA v2 Checkbox & Invisible

Initializing JavaScript

Add the following to the <head> section of your page:

{!! LaraCaptcha::script() !!}

With other options in hCAPTCHA dox

{!! LaraCaptcha::script('yourCallbackFunction', 'onload' 'en', 'on') !!}

Note: The first parameter is the callback function name, the second is the rendering mode (onload or explicit), the third is the language code from doc, and the fourth is the recaptchacompat option

Displaying Captcha Widget - Checkbox

Add the following to your form:

{!! LaraCaptcha::display() !!}

With other options in hCAPTCHA dox

{!! LaraCaptcha::display(['data-theme' => 'dark']) !!}

Note: The parameter is an array of attributes for the widget

Displaying Captcha Widget - Invisible

Add the following to your form, see documentation for invisible hcaptcha:

{!! LaraCaptcha::displayInvisibleButton('formIdentifier', 'Submit Button',['data-size' => 'invisible']) !!}

Note: The first parameter is the form identifier, the second is the button label (Submit Button), and the third is an array of attributes for the widget, see doc

Validating Captcha

Add the following to your validation rules:

'h-captcha-response' => 'hcaptcha',

You can also use the rule in the Validator facade:

$validator = Validator::make($request->all(), [
    'h-captcha-response' => 'hcaptcha',
]);

Add Custom Validation Message

Add the following to your validation messages:

'h-captcha-response.hcaptcha' => 'Captcha verification failed.',

Or you can change the default message in config/laracaptcha.php:

'error_message' => 'Captcha verification failed.',

For other configuration go through the config/laracaptcha.php file.

Testing

./vendor/bin/phpunit

Changelog

Please see CHANGELOG for more information what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email [email protected] instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.

laracaptcha's People

Contributors

hendurhance avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

laracaptcha's Issues

Language setting

When I change the Language setting to zh-TW in laracaptcha.php config file.
But the Google reCaptcha still state in en.

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.