Может войдёшь?
Черновики Написать статью Профиль
dimablack

dimablack +1

Вступил в наши ряды: 10 февраля 2020

Замечен в последний раз: 10 февраля 2020

Оставил на форуме: 1 сообщение

Последнее сообщение: 10 февраля 2020

Вы сможете отправить письмо, если войдёте

Комментарии (2)

dimablack

для новичков и не очень, советую черпать информацию из англоязичних ресурсов, так как сообщество там намного больше, соотвественно и информации в разы больше, и есть куча видеоуроков, где на интуитивно понятном английском обясняють и показывают, что и как делать вот очень хорошие уроки

https://laracasts.com/series/laravel-6-from-scratch

dimablack

При создании 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(политика прав пользователя), и припустим что у него нет прав на даное действие и она не пройшла. В итоге, трата времени пользователя.