Laravel: 403 Это действие не авторизовано - PullRequest
0 голосов
/ 02 мая 2020

У меня проблема с авторизацией определенного пользователя 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;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...