Looking to hire Laravel developers? Try LaraJobs

arcaptcha-laravel maintained by arcaptcha

Description
Laravel Package for the ArCaptcha
Last update
2024/07/20 15:47 (dev-main)
License
Downloads
3 223

Comments
comments powered by Disqus

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

# Optional: Default returned value from verify function
# when there is an Network or any other unexpected issue.
ARCAPTCHA_VERIFY_EXCEPTION_VALUE=true

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.