У меня быстрый вопрос о политике Laravel. Я пишу очень простой API. У меня есть объект Podcast с некоторыми конечными точками GET:
GET /api/podcasts => returns all podcasts
GET /api/podcasts/{podcast} => returns a given podcast
Я использую Политики, привязанные к модели Подкаста. И я использую $this->authorizeResource(Podcast::class);
в конструкторе моего PodcastController
класса. Это прекрасно работает, я могу получить доступ только к своим собственным подкастам!
Теперь у меня есть подобъекты, например, файлы. Поэтому я создал новую конечную точку:
GET /api/podcasts/{podcast}/files/{file} => returns a specific file of a podcast
Я добавил $this->authorizeResource(Podcast::class);
в конструктор класса FileController
. Делая это, я не могу ввести любой идентификатор подкаста в URL, только мой собственный, что хорошо. Однако я могу ввести любой идентификатор файла в URL, включая файлы, которые не принадлежат моему подкасту. Например:
GET /api/podcasts/1/files/3
Подкаст # 1 мой, это хорошо. Однако файл № 3 принадлежит подкасту № 2 (не № 1), который НЕ мой. Я должен получить несанкционированный доступ в этой точке.
Есть идеи? Спасибо
Axel