Политики Laravel - до / после обновления?

Я немного запутался с тем, как лучше всего использовать классы Policy в Laravel.

Допустим, у меня есть User и Post, У меня есть метод политики при обновлении поста, который проверяет, что User владеет постом.

Должен ли я пройти Post возражать в authorize способ сразу после загрузки из базы данных? Или однажды я обновил заполняемые значения?

Моя проблема в том, что если user_id изменения на Postлибо метод authorize позволит пользователю изменить сообщение, даже если он не является его владельцем, либо позволит ему сменить пользователя на кого-то другого, что означает, что он потерял к нему доступ.

Значит ли это, что мне нужно позвонить $this->authorize('update', $post) как до, так и после того, как я обновлю его значения?

$post = Post::findOrFail($id); 

$this->authorize('update', $post); // Should I call it here

$post->fill($request->input());

$this->authorize('update', $post); // Or here? Or, both places?

Или я должен использовать проверку запросов, чтобы гарантировать, что пользователь не может вводить идентификаторы объектов, к которым у него нет доступа?

1 ответ

Вам нужно вызвать $this->authorize('update', $post) перед обновлением значений

$post = Post::findOrFail($id); 

$this->authorize('update', $post); // throw a HttpException if the action is not authorized

$post->fill($request->input());

источник: https://laravel.com/docs/5.2/authorization

Другие вопросы по тегам