This packages works with multiple drivers, and you can create custom drivers if there are not available in the current drivers list (below list).
This is a Laravel Package for captcha Integration. This package supports Laravel 5.4+
.
This packages works with multiple drivers, and you can create custom drivers if there are not available in the current drivers list (below list).
- Simple : a simple image captcha.
- Others are under way.
you can create your own custom driver if not exists in the list , read the
Create custom drivers
section.
Via Composer
$ composer require shetabit/captcha
If you are using Laravel 5.5
or higher then you don't need to add the provider and alias.
In your config/app.php
file add these two lines.
# In your providers array.
'providers' => [
...
Shetabit\Captcha\Provider\CaptchaServiceProvider::class,
],
# In your aliases array.
'aliases' => [
...
'Payment' => Shetabit\Captcha\Facade\Captcha::class,
],
then run php artisan vendor:publish
to publish config/captcha.php
file in your config directory.
In the config file you can set the default driver
to use for all your payments. But you can also change the driver at runtime.
Choose what gateway you would like to use in your application. Then make that as default driver so that you don't have to specify that everywhere. But, you can also use multiple gateways in a project.
// Eg. if you want to use simple. (simple is the driver's name)
'default' => 'simple',
Then see the configs in the drivers array.
'drivers' => [
'simple' => [
'middleware' => ['web'], // middleware
'route' => 'captcha', // route name
'characters' => 'ABCDEFGHIKJLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz123456789',
'width' => 230,
'height' => 70,
'foregroundColors' => ['2980b9','2E9FFF','FF1166','000000','22EE99'],
'backgroundColor' => '#FFF',
'letterSpacing' => 6,
'fontFamily' => resource_path('views/vendor/captchaSimpleDriver/assets/fonts/DroidSerif.ttf'),
'fontSize' => 30,
'length' => [4, 6],
'scratches' => [5, 8],
'sensitive' => false,
'sessionKey' => 'captcha',
],
...
]
you have 2 steps to go
- add captcha in forms
- add validation
In your code, use it like the below:
<form>
...
{!! captcha() !!}
...
</form>
if you use simple
driver, you can change the styles and UI easily,
just have a look on resources/views/vendor/captchaSimpleDriver.blade.php
in order to validate forms wich use captcha, you can use captcha
validation role.
The below example shows every thing you need to know about captcha validation:
...
$request->validate([
'email' => 'required|email',
'password' => 'required|string',
'captcha' => 'required|captcha',
]);
...
First you have to add the name of your driver, in the drivers array and also you can specify any config parameters you want.
'drivers' => [
'simple' => [...],
'my_driver' => [
... # Your Config Params here.
]
]
Now you have to create a Driver Map Class that will be used to pay invoices.
In your driver, You just have to extend Shetabit\Captcha\Abstracts\Driver
.
Ex. You created a class : App\Packages\CaptchaDriver\MyDriver
.
namespace App\Packages\CaptchaDriver;
use Illuminate\Support\ServiceProvider;
use Shetabit\Captcha\Abstracts\Driver;
class MyDriver extends Driver
{
protected $serviceProvider;
/**
* Driver settings.
*
* @var object
*/
protected $settings;
public function __construct(ServiceProvider $serviceProvider, $settings)
{
$this->serviceProvider = $serviceProvider;
$this->settings = (object) $settings;
}
/**
you must write your captcha generation
logic in the below method.
**/
public function generate()
{
...
// create captcha view and return it
return View::make('yourCustomDriverView');
}
/**
you must write your captcha verification
logic in the below method.
**/
public function verify($token = null)
{
...
$storedToken = ...
if (empty($this->settings->sensitive)) {
$storedToken = mb_strtolower($storedToken);
$token = mb_strtolower($token);
}
return $token == $storedToken;
}
}
Once you create that class you have to specify it in the captcha.php
config file map
section.
'map' => [
...
'my_driver' => App\Packages\CaptchaDriver\MyDriver::class,
]
Note:- You have to make sure that the key of the map
array is identical to the key of the drivers
array.
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING and CONDUCT for details.
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.