У меня проблема с авторизацией определенного пользователя c, который нажимает только кнопку, но когда я пытаюсь нажать кнопку, всегда говорю Unathorized, хотя я уже выгрузил и d ie авторизация, которая, скажем, true
не знаю, какая часть кода неправильная. Вот код.
Политика беседы
public function update(User $user, Conversation $conversation)
{
//
return $conversation->user->is($user);
}
Контроллер разговора
public function store(Reply $reply)
{
$this->authorize('update', $reply->conversation);
$this->conversation->bestreply($reply);
}
The HTML
@foreach ($conversation->replies as $reply)
<hr>
<div>
<p>{{ $reply->user->name }} said...</p>
{{ $reply->comment }}
@can('update',$conversation)
<form action="/best-reply/{{ $reply->id }}" method="post">
@csrf
<button type="submit">best reply</button>
</form>
@endcan
</div>
@continue($loop->last)
@endforeach
Модель разговора
public function bestreply(Reply $reply)
{
return $this->best_reply = $reply->id;
$this->save();
}
public function user()
{
return $this->belongsTo(User::class);
}
Ответ Модель
public function user()
{
return $this->belongsTo(User::class, 'user_id');
}
Веб-маршрут
Auth::routes();
Route::get('/conversations', 'ConversationsController@index')->middleware('auth');
Route::get('/conversations/{conversation}', 'ConversationsController@show');
Route::post('/best-reply/{reply}', 'ConversationBestReplyController@store');
Route::get('/home', 'HomeController@index')->name('home');
Route::get('/payment/create', 'PaymentController@index')->middleware('auth');
Route::post('/payment', 'PaymentController@store')->middleware('auth');
Route::get('/notifications', 'UserNotificationsController@show')->middleware('auth');
Средняя посуда
public function middleware($middleware = null)
{
if (is_null($middleware)) {
return (array) ($this->action['middleware'] ?? []);
}
if (is_string($middleware)) {
$middleware = func_get_args();
}
$this->action['middleware'] = array_merge(
(array) ($this->action['middleware'] ?? []), $middleware
);
return $this;
}