arcaptcha/arcaptcha-laravel

Laravel Package for the ArCaptcha

1.0.3 2023-12-03 16:05 UTC

This package is not auto-updated.

Last update: 2024-05-05 18:05:27 UTC


README

ArCaptcha

Laravel ArCaptcha Package

Latest Stable Version Total Downloads Latest Unstable Version License PHP Version Require

Laravel Package for the ArCaptcha This package supports PHP 7.3+.

For PHP integration you can use mohammadv184/arcaptcha package.

List of contents

Installation

You can install the package via composer:

composer require arcaptcha/arcaptcha-laravel

Laravel 5.5 (or greater) uses package auto-discovery, so doesn't require you to manually add the Service Provider, but if you don't use auto-discovery ArCaptchaServiceProvider must be registered in config/app.php:

'providers' => [
    ...
    Mohammadv184\ArCaptcha\Laravel\ArCaptchaServiceProvider::class,
];

You can use the facade for shorter code. Add ArCaptcha to your aliases:

'aliases' => [
    ...
    'ArCaptcha' => Mohammadv184\ArCaptcha\Laravel\Facade\ArCaptcha::class,
];

Configuration

Publish package

Create config/arcaptcha.php configuration file using the following artisan command:

php artisan vendor:publish --provider="Mohammadv184\ArCaptcha\Laravel\ArCaptchaServiceProvider"

Set the environment

Open .env file and set ARCAPTCHA_SITE_KEY and ARCAPTCHA_SECRET_KEY:

# in your .env file
ARCAPTCHA_SITE_KEY=YOUR_API_SITE_KEY
ARCAPTCHA_SECRET_KEY=YOUR_API_SECRET_KEY

Customize error message

Before starting please add the validation message to resources/lang/[LANG]/validation.php file

return [
    ...
    'arcaptcha' => 'Hey!!! :attribute is wrong!',
];

How to use

How to use ArCaptcha in Laravel.

Embed Script in Blade

Insert @arcaptchaScript blade directive before closing </head> tag.

You can also use ArCaptcha::getScript().

<!DOCTYPE html>
<html>
  <head>
    ... @arcaptchaScript
  </head>
</html>

Form setup

After you have to insert @arcaptchaWidget blade directive inside the form where you want to use the field arcaptcha-token.

You can also use ArCaptcha::getWidget().

Note : You can pass widget options into getWidget function or arcaptchaWidget directive like this : @arcaptchaWidget(['lang'=>'en'])

To see available options on widget see here

<form>
  @csrf ... @arcaptchaWidget
  <!-- OR -->
  {!! ArCaptcha::getWidget() !!}
  <input type="submit" />
</form>

Verify submitted data

Add arcaptcha to your rules

$validator = Validator::make(request()->all(), [
        ...
        'arcaptcha-token' => 'arcaptcha',
    ]);

    // check if validator fails
    if($validator->fails()) {
        ...
        $errors = $validator->errors();
    }

Invisible mode example

Just try to pass size and callback option to getWidget function. Make sure to define callback function in global scope:

<form>
  {!! ArCaptcha::getWidget([ 'size'=>'invisible','callback'=>'callback']) !!}
  <input type="submit" />

  <script>
    function callback(token) {
      // Challenge is solved! Just submit the form!
    }
  </script>
</form>

Credits

License

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