%PDF- %PDF-
| Direktori : /home/graphicd/public_html/vebto/common/Settings/Validators/ |
| Current File : /home/graphicd/public_html/vebto/common/Settings/Validators/RecaptchaCredentialsValidator.php |
<?php
namespace Common\Settings\Validators;
use Exception;
use Illuminate\Support\Arr;
use Common\Core\HttpClient;
class RecaptchaCredentialsValidator
{
const KEYS = ['recaptcha.site_key', 'recaptcha.secret_key'];
/**
* @var HttpClient
*/
private $httpClient;
public function __construct()
{
$this->httpClient = new HttpClient([
'exceptions' => true
]);
}
public function fails($settings)
{
try {
$response = $this->httpClient->post('https://www.google.com/recaptcha/api/siteverify', [
'form_params' => [
'response' => 'foo-bar',
'secret' => Arr::get($settings, 'recaptcha.secret_key'),
]
]);
if ($response['success'] === false && Arr::get($response, 'error-codes.1') === 'invalid-input-secret') {
$errors = ['recaptcha.secret_key' => 'This recaptcha secret key is not valid.'];
if ( ! Arr::get($settings, 'recaptcha.site_key')) {
$errors['recaptcha.site_key'] = 'Recaptcha site key is required';
}
return $errors;
}
} catch (Exception $e) {
return $this->getErrorMessage($e);
}
}
/**
* @param Exception $e
* @return array
*/
private function getErrorMessage($e)
{
return ['recaptcha-group' => $e->getMessage()];
}
}