Laravel Политика - проверка статуса объекта - PullRequest
1 голос
/ 16 января 2020

У меня есть модель с атрибутом status (может быть open или ready). Модель может быть отредактирована при статусе open, но должна быть заблокирована при ее ready.

Разрешено ли мне делать это в моем Policy? Или политики предназначены только для авторизации?

Я знаю, что могу просто сделать это, мой вопрос больше о принципах в Laravel ...

1 Ответ

1 голос
/ 16 января 2020

Кажется, нет ничего плохого в том, чтобы помещать подобные проверки в Политику вашей модели, это немного зависит от контекста. Я хотел бы думать о политиках (как вы описали) как начальные ворота входа в данное приложение. Так что, если это относится, например, только к методу обновления вашего контроллера, у вас все в порядке.

Однако, в случае, если могут быть другие "пути" или процессы, на которые может повлиять "open / ready" Ограничение, которое вы описали, также может быть целесообразным, чтобы поместить этот вид проверок в метод ModelObserver saving.

Делая это, вы убедитесь, что вы не случайно манипулируете объектом, когда он ready только потому, что вы забыли сделать проверку авторизации заранее. Другими словами, реализуя его в методе saving ObserverClass, вы получаете «автономный» бит поведения, который скорее представляет бизнес-логи c, чем логи авторизации c.

...