Laravel 5 подтверждение запроса формы возврат запрещенной ошибки

Я пытаюсь использовать проверку запроса формы Laravel 5.1, чтобы разрешить, если запрос принадлежит владельцу. Проверка выполняется, когда пользователь пытается обновить часть таблицы clinics через show.blade.php.

Моя настройка до сих пор:

routes.php:

Route::post('clinic/{id}', 
    array('as' => 'postUpdateAddress', 'uses' => '[email protected]'));

ClinicController.php:

public function postUpdateAddress($id, 
        \App\Http\Requests\UpdateClinicAddressFormRequest $request)
    {
        $clinic             = Clinic::find($id);
        $clinic->save();

        return Redirect::route('clinic.index');
    }

UpdateClinicAddressFormRequest.php:

public function authorize()

    {
        $clinicId = $this->route('postUpdateAddress');

        return Clinic::where('id', $clinicId)
        ->where('user_id', Auth::id())
        ->exists();
    }

Show.blade.php

{!! Form::open(array('route' => array('postUpdateAddress', $clinic->id), 'role'=>'form')) !!}

{!! Form::close() !!}

Если я dd($clinicId) внутри функции авторизации, она возвращает null, поэтому я думаю, что там, где проблема!

Любая помощь, почему его подавать, заявив, что это "запрещено", будет чрезвычайно оценена.

Ответ 1

Вы получаете Запрещенную ошибку, потому что метод authorize() запроса формы возвращает false:

Проблема заключается в следующем: $clinicId = $this->route('postUpdateAddress');

Чтобы получить доступ к значению параметра маршрута в запросах формы, вы можете сделать это:

$clinicId = \Route::input('id'); //to get the value of {id}

поэтому authorize() должен выглядеть следующим образом:

public function authorize()
{
    $clinicId = \Route::input('id'); //or $this->route('id');

    return Clinic::where('id', $clinicId)
    ->where('user_id', Auth::id())
    ->exists();
}

Ответ 2

Я добавляю это подтверждение владельца для авторизации() в запросе и работе

public function authorize()
{
    return \Auth::check();
}