Политики 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?

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

0

Решение

Вам нужно вызвать $ 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#controller-authorization

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]