При создании ModelRequest-класс, помимо валидации, там же нужно и реализовать проверку прав пользователей, и тогда наш реквест, добавить
return auth()->user()->can('create', Model::class);
в метод
public function authorize()
будет выглядеть так:
class ModelRequest extends FormRequest
{
public function authorize()
{
return auth()->user()->can('create', Model::class); //проверка прав пользовтеля перед валидацией
}
public function rules()
{
return [
'title' => 'required|max:255',
'content' => 'required',
'make_id' => 'required|exists:makes,id'
];
}
}
и с контролерра, тогода убираем
$this->authorize('create', Model::class);
и тогда у нас вконце поличится вот так:
public function store(ModelRequest $request)
{
$model = $this->model->create($request->all());
$this->modelService->handleUploadedImage($model->id);
return redirect()->route('models.index')->with('message', __('car.model_added'));
}
помимо чистого кода и тонкого контролера, делать это нужно для оптимизации, чтобы сервер лишний раз не делал валидацию, а потом уже проверял, можно ли пользователю это делать или нет. И плюс представим ситуацию, а нас есть некая форма, пользователь ее заполняет, и заполняет неправильно, срабатывает валидация, пользователь пробует еще пару раз(тратит времья), дальше валидация проходит, и потом срабативаєт Policy(политика прав пользователя), и припустим что у него нет прав на даное действие и она не пройшла. В итоге, трата времени пользователя.
для новичков и не очень, советую черпать информацию из англоязичних ресурсов, так как сообщество там намного больше, соотвественно и информации в разы больше, и есть куча видеоуроков, где на интуитивно понятном английском обясняють и показывают, что и как делать вот очень хорошие уроки
https://laracasts.com/series/laravel-6-from-scratch