@smilelan

Как ограничить доступ пользователю к папкам в storge?

Добрый вечер! Как можно ограничить доступ к только своим файлам в storage, в которой все разбито по id пользователя. Суть такая чтобы один пользователь не мог иметь доступ к файлам которые он не загружал. Спасибо
  • Вопрос задан
  • 272 просмотра
Решения вопроса 1
@jazzus
Создать диск с visibility private в конфиге filesystems или менять приватность файлов при загрузке.
Сделать отношение user hasMany files.
Сделать политику FilePolicy где прописать в методе view/download
return $file->user_id === $user->id;
Перед запуском методов Storage запускать проверку политики везде. Например в контроллере
$this->authorize('download', $file);
return Storage::disk($disk)->download($path);

материалы
https://laravel.com/docs/7.x/authorization
https://laravel.com/docs/7.x/filesystem
https://laravel.com/docs/7.x/eloquent-relationships
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Kostik_1993
Web Developer
На уровне ограничения прямого доступа к файлам никак!
Пишите решение в своем коде с отдачей файлов из PHP.
Как вариант еще вместо обычного числового id использовать уникальный независимый uuid, но доступ останется все равно прямой, но уже не так просто вычислить его.
Вам же нужно использовать Temporary URLs, тем более что Laravel это умеет из коробки
Ну и не забудьте что файлы класть в хранилище без пометки public
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы