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();
}