Получение данных об авторизованном пользователе Laravel
Всем привет. Разрабатываю проект на Laravel 8. Столкнулся с такой проблемой: работаю с платежной системой для приема платежей. Когда пользователь совершает оплату, callback от платежной системы приходит на определенный адрес, потом обрабатывается и приходит методом POST на мой сайт. Затем отслеживаю это в web.php и передаю в контроллер. В контроллере мне нужно изменить данные о пользователе, который совершил оплату, но когда пытаюсь узнать о нем через Auth::user(), ничего не работает. Также пытался отследить id пользователя через Auth::id(), но тоже безрезультатно. Когда проверяю Auth::check()говорит о том, что пользователь неавторизован. Как можно решить эту проблему. Уже несколько дней думаю над этим вопросом. Буду очень благодарен тому, кто сможет помочь.
web.php:
Route::post('/payment', [RateController::class, 'payment'])->name('payment');
RateController:
public function payment(Request $request) {
if($request->input('status') == 'done') {
$user = Auth::user();
$user->rate = $request->input('rate');
$user->save();
}
}
Прием callback:
<?php
$str = file_get_contents('php://input');
$object = json_decode($str, true);
$url = 'https://findinvestor.me/payment';
$params = array(
'rate' => 'bronze',
'status' => $object['status'],
);
$result = file_get_contents($url, false, stream_context_create(array(
'http' => array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => http_build_query($params)
)
)));
?>
Ответы (1 шт):
Маршрут 'payment' находится за пределами middleware auth. Вероятнее всего. Если так, то фасад Auth вам ничего и не предоставит о пользователе. Сперва получите сведения о пользователе в ответе от платежного сервиса, потом попытайтесь его найти в своей базе. Попытайтесь авторизоваться с ним, если для этого достаточно будет данных. После всего это фасад Auth “начнёт работать”. Если у вас весь «жизненный цикл» оплаты происходит в моменте, то надо поместить маршрут в middleware('auth').