@smilelan

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

Добрый вечер! Как можно ограничить доступ к только своим файлам в storage, в которой все разбито по id пользователя. Суть такая чтобы один пользователь не мог иметь доступ к файлам которые он не загружал. Спасибо
  • Вопрос задан
  • 111 просмотров
Решения вопроса 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
Fullstack Web Developer | PHP | Laravel | Vue.js
На уровне ограничения прямого доступа к файлам никак!
Пишите решение в своем коде с отдачей файлов из PHP.
Как вариант еще вместо обычного числового id использовать уникальный независимый uuid, но доступ останется все равно прямой, но уже не так просто вычислить его.
Вам же нужно использовать Temporary URLs, тем более что Laravel это умеет из коробки
Ну и не забудьте что файлы класть в хранилище без пометки public
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы