45
common/Settings/Validators/RecaptchaCredentialsValidator.php
Executable file
45
common/Settings/Validators/RecaptchaCredentialsValidator.php
Executable file
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
namespace Common\Settings\Validators;
|
||||
|
||||
use Exception;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
|
||||
class RecaptchaCredentialsValidator
|
||||
{
|
||||
const KEYS = ['recaptcha.site_key', 'recaptcha.secret_key'];
|
||||
|
||||
public function fails($settings): array|false
|
||||
{
|
||||
try {
|
||||
$response = Http::asForm()->post(
|
||||
'https://www.google.com/recaptcha/api/siteverify',
|
||||
[
|
||||
'response' => 'foo-bar',
|
||||
'secret' => Arr::get($settings, 'recaptcha.secret_key'),
|
||||
],
|
||||
);
|
||||
|
||||
if (
|
||||
$response['success'] === false &&
|
||||
$response['error-codes'][0] !== 'invalid-input-response'
|
||||
) {
|
||||
return [
|
||||
'recaptcha_group' =>
|
||||
Arr::get($response, 'error-codes')[0] ??
|
||||
__('These credentials are not valid'),
|
||||
];
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
return $this->getErrorMessage($e);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private function getErrorMessage(Exception $e): array
|
||||
{
|
||||
return ['recaptcha_group' => $e->getMessage()];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user