Skip to content

Instantly share code, notes, and snippets.

@assghard
Forked from mitrallex/ValidRecaptcha.php
Last active April 4, 2021 01:03
Show Gist options
  • Save assghard/eee8fd0403f2f3212baf52191169bbff to your computer and use it in GitHub Desktop.
Save assghard/eee8fd0403f2f3212baf52191169bbff to your computer and use it in GitHub Desktop.
laravel-google-recaptcha
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
use GuzzleHttp\Client;
class ValidRecaptcha implements Rule
{
/**
* Create a new rule instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
try {
$client = new Client([
'base_uri' => 'https://google.com/recaptcha/api/',
'verify' => (env('APP_ENV') == 'production') ? true : false
]);
$response = $client->post('siteverify', [
'query' => [
'secret' => env('GOOGLE_RECAPTCHA_SECRET'),
'response' => $value
]
]);
return json_decode($response->getBody())->success; // true or false
} catch (\Throwable $th) {
return false;
}
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'ReCaptcha verification failed. Try again.';
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment