Примечание. Я собирался опубликовать это как комментарий, но получилось слишком много. Не стесняйтесь ждать лучших ответов и, возможно, считайте это просто комментарием.
Я думаю, что вы упускаете весь смысл здесь. У вас может быть middleware
для обращения к ACL, или вы можете использовать FormRequest
для обращения к ACL или использовать каждый из них отдельно. Например, в методе authorize
метода CreateTaskRequest
вы можете проверить ACL, чтобы узнать, есть ли у пользователя подходящая роль для создания задачи.
Возможно, вы слишком увлеклись, когда Джефф пытается проверить, owns
ли пользователь опубликовал сообщение. Этот тип ACL ориентирован на запись, но у вас может быть роль, которая просто принимает пользователя в качестве параметра (и никакой другой объект) и смотрит, имеет ли этот пользователь только определенную роль. Возвращая значение true, действие разрешается, в противном случае оно запрещается.
Промежуточное ПО больше связано с маршрутом, чем с запросом. У вас также может быть промежуточное ПО, которое получает аутентифицированного пользователя и проверяет, есть ли у него роль для создания задачи. Это разные способы достижения одной и той же цели (что является одним из преимуществ Laravel, имеющего множество способов достижения одной и той же цели).
Ваше конкретное действие, которое нужно выполнить, — это действие «Создать новую задачу». Кто вы хотите, чтобы иметь возможность сделать это? Пользователи, у которых есть роль менеджера? Пользователи с разрешением create-task
?
В конце дня я бы рассмотрел следующее:
- Есть много маршрутов, которые будут иметь одно и то же правило? Возможно, промежуточное программное обеспечение было бы хорошим выбором.
- Существуют ли определенные правила для каждого вида операций? Может ли пользователь, который не создавал задачу, отредактировать ее? Запросы формы могут быть проще для достижения такой спецификации
- Какая
$this
среда сделает мою жизнь проще? $this
из Form Request
или $this
из промежуточного ПО?
Одна вещь, которую я усвоил на уроках Джеффа, это то, что он преподает слишком много классных вещей, и иногда я пропускаю один или два пункта. Попробуйте еще раз просмотреть основные шаги и, возможно, остановитесь, когда решите, что нашли что-то, что сработает. Затем реализуйте это и посмотрите, чем ваш случай отличается от его, и как, по вашему мнению, он напишет эту функцию.
person
Marco Aurélio Deleu
schedule
11.08.2016