Я использую контроллер livewire с именем CallControllerButton.php, который отвечает за вызов контроллера Laravel, проблема в том, что CallControllerButton должен вызывать его с помощью метода PUT, и каждый раз, когда ответ кода состояния равен 419 с получением, это нормально, но это не хорошо.
CallController здесь вызывает метод syncFromLdap в UserController следующим образом:
public function callUrl($ajaxUrl)
{
try {
/*$client = new Client([
'base_uri' => URL::to('/'),
'headers' => ['X-CSRF-Token'=> csrf_token()],
'timeout' => 5.0,
'verify' => false
]);
$request = $client->put($ajaxUrl);*/
$request = Http::withOptions([
'headers' => ['X-CSRF-Token'=> csrf_token()],
'timeout' => 5.0,
'verify' => false
])->put(URL::to('/').'/'.$ajaxUrl)
;
// PUT successful response is 200 error is 304
if($request->getStatusCode() == 200){
session()->flash('message', 'User sync ok');
}else{
session()->flash('error', $request->getStatusCode().'/'.$request->getBody());
}
}catch (HttpClientException $httpClientException){
session()->flash('error', 'GuzzleException message : '.$httpClientException->getMessage().' - error code:'.$httpClientException->getCode());
}
}
и метод syncFromLdap:
public function syncFromLdap(User $user)
{
Artisan::call('ldap:import', [
'provider' => 'ldap',
'user' => $user->name,
'--no-interaction',
'--filter' => '(mail='.$user->email.')',
//'--attributes' => 'cn,mail,samaccountname',
]);
$output = Artisan::output();
if (str_contains($output,'Successfully imported / synchronized [1]')){
return new Response(null,200);
}
return new Response(null,304);
}
конечно, соответствующий маршрут web.php в порядке, и токен csrf включен в заголовки. Что я пропустил? Спасибо