Привет, мне нужна помощь в laravel, включая Google Reaptcha, я не могу набрать очень много очков, я могу только получить токен из рекапчи, и когда я пытаюсь сделать проверку, она всегда ложна, я не знаю, почему
Зарегистрируйте контроллер
protected function validator(array $data)
{
$messages = [
'email.unique' => __('frontend.email_in_use'),
];
$validate = Validator::make($data, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:6|confirmed',
'grepcaptcha' => ['require', new ReCAPTCHAv3],
], $messages);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return User
*/
protected function create(array $data){
if (array_key_exists("register",$data)){
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
}else{
if($data['role']==1){
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'surname' => $data['surname'],
'password' => bcrypt($data['password']),
'vat' => $data['nif'],
'phone_number' => $data['phone'],
'headquarters_country' => $data['country'],
]);
}else{
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'surname' => $data['surname'],
'vat' => $data['nif'],
'headquarters_address' => $data['address'],
'headquarters_zip' => $data['zip_code'],
'headquarters_city' => $data['city'],
'headquarters_country' => $data['country'],
'phone_number' => $data['phone'],
'password' => bcrypt($data['password']),
'roles' => 'transporter',
]);
}
}
Email::sendNotificationNewUser($user->id);
return $user;
}
Правило рекапитчи
<?php
namespace App\Rules;
use GuzzleHttp\Client;
use Illuminate\Contracts\Validation\Rule;
use Illuminate\Support\Facades\Request;
class ReCAPTCHAv3 implements Rule
{
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
$client = new Client();
try {
$response = $client->post('https://www.google.com/recaptcha/api/siteverify', [
'form_params' => [
'secret' => config('recaptcha.v3.private_key'),
'response' => $value,
'remoteip' => Request::ip(),
],
]);
} catch (\GuzzleHttp\Exception\BadResponseException $e) {
return false;
}
return $this->getScore($response) >= config('recaptcha.v3.minimum_score');
}
private function getScore($response)
{
return \GuzzleHttp\json_decode($response->getBody(), true)['score'];
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'Failed on reCAPTCHA verification.';
}
}
после того, как я отправляю форму, получаю данные формы и токен рекапчи ("grecaptcha" => "03AERD8XpsUZNKn-hWeTnkU3- ... ")
Кто-нибудь может мне помочь?