видео laravel не в общедоступной папке - PullRequest
0 голосов
/ 06 мая 2018

У меня есть приложение Laravel (5.4)

У каждого пользователя есть папка в / public, куда администратор может загрузить (через FTP) несколько видео для просмотра пользователями. У каждого пользователя разные видео.

У меня сейчас проблема в том, что все в общедоступной папке доступно. Также если пользователь не залогинен. Как этого избежать?

1 Ответ

0 голосов
/ 06 мая 2018

давайте предположим, что у нас есть 2 пользователя с этими именами:

  • джон
  • Сара

тогда у вас будет 2 папки:

  • storage/app/john
  • storage/app/sarah

Теперь, чтобы получить доступ к файлам Джона, вы должны иметь в вашем маршруте / web.php следующее:

Route::get('/file/{username}/{name}','FilesController@getFile');

затем в FilesController добавить эту функцию:

public function getFile($username,$name){
   if(!Auth::user()){
       //user is not logged in
       return response(null,403)
    }
   $auth_user = Auth::user()->username;
   if($username === $auth_user){
    //continue with the request

      $exists = Storage::disk('local')->exists($username .'/'. $name);
     if(!$exists){
         // file not found
         return response(null,404);
     }
      $file = Storage::get($username .'/'. $name);
      return response($file);
   }else{
     // the user doesn't have access
   }
}

я не проверял это, поэтому если у вас возникли проблемы, дайте мне знать

Подробнее о хранении в багажнике

...