shell bypass 403
<?php
/**
* Copyright (c) 2017 - present
* LaravelGoogleRecaptcha - ReCaptchaServiceProvider.php
* author: Roberto Belotti - roby.belotti@gmail.com
* web : robertobelotti.com, github.com/biscolab
* Initial version created on: 12/9/2018
* MIT license: https://github.com/biscolab/laravel-recaptcha/blob/master/LICENSE
*/
namespace Biscolab\ReCaptcha;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\ServiceProvider;
/**
* Class ReCaptchaServiceProvider
* @package Biscolab\ReCaptcha
*/
class ReCaptchaServiceProvider extends ServiceProvider
{
/**
* Indicates if loading of the provider is deferred.
*
* @var bool
*/
protected $defer = false;
/**
*
*/
public function boot()
{
$this->addValidationRule();
$this->registerRoutes();
$this->publishes([
__DIR__ . '/../config/recaptcha.php' => config_path('recaptcha.php'),
], 'config');
}
/**
* Extends Validator to include a recaptcha type
*/
public function addValidationRule()
{
Validator::extendImplicit(recaptchaRuleName(), function ($attribute, $value) {
return app('recaptcha')->validate($value);
}, trans('validation.recaptcha'));
}
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
$this->mergeConfigFrom(
__DIR__ . '/../config/recaptcha.php', 'recaptcha'
);
$this->registerReCaptchaBuilder();
}
/**
* Get the services provided by the provider.
*
* @return array
*/
public function provides(): array
{
return ['recaptcha'];
}
/**
* @return ReCaptchaServiceProvider
*
* @since v3.4.1
*/
protected function registerRoutes(): ReCaptchaServiceProvider
{
Route::get(
config('recaptcha.default_validation_route', 'biscolab-recaptcha/validate'),
['uses' => 'Biscolab\ReCaptcha\Controllers\ReCaptchaController@validateV3']
)->middleware('web');
return $this;
}
/**
* Register the HTML builder instance.
*
* @return void
*/
protected function registerReCaptchaBuilder()
{
$this->app->singleton('recaptcha', function ($app) {
$recaptcha_class = '';
switch (config('recaptcha.version')) {
case 'v3' :
$recaptcha_class = ReCaptchaBuilderV3::class;
break;
case 'v2' :
$recaptcha_class = ReCaptchaBuilderV2::class;
break;
case 'invisible':
$recaptcha_class = ReCaptchaBuilderInvisible::class;
break;
}
return new $recaptcha_class(config('recaptcha.api_site_key'), config('recaptcha.api_secret_key'));
});
}
}