2016-02-08 2 views
0

Я пишу файловую систему с системой входа в систему в данный момент в Laravel 5, и на данный момент каждый пользователь может создавать папки и загружать файлы, но когда я копирую путь из папки «A», от пользователя «1» и выйти из системы и войти в систему с пользователем «2» и вставить путь в браузере, у меня есть доступ к папке «A» от пользователя «1». Я хочу, чтобы только человек, создавший папку, мог открыть его и загрузить файлы. Я хочу аутентификацию через идентификатор пользователя, который проверяет, является ли пользователь, который пытается открыть папку/путь, создателем и имеет разрешение на это.Laravel 5 Файловая система - Разрешения на каталоги

public function mkdir(Request $request) { 
    $validator = Validator::make ($request->all(), [ 
      'dirname' => 'required|max:20' 
    ]); 

    if ($validator->fails ($request)) { 

     return redirect ('filesystem')->withErrors ($validator)->withInput(); 
    } else { 
     $id = Auth::user()->id; 

     $dir = $request->dir . "/" . $request->dirname; 
+1

Можете ли вы показать любой код у вас уже есть? –

+0

Да, я добавил код выше. – Trayer

+0

Вы должны сохранить имя пользователя и имя папки в таблице в своей базе данных, а затем в блоке 'else' использовать эти данные, чтобы проверить, имеет ли пользователь разрешение на запись в каталог. –

ответ

0

Trayer:

Поскольку структура папок и владение папки устанавливается для пользователей на сервере, делать что-то вроде этого без какой-то базы данных не представляется возможным. Я бы предложил что-то вроде того, что предлагает noodles_ftw.

Создайте папку folderPermissions и в этой папке она будет иметь пару столбцов. владелец, путь

Владелец будет идентификатором пользователя, который создал папку, а путь - путь к папке.

Далее вы можете создать какое-то промежуточный или другую проверку сказать baiscally следующего

// get current user id 
// get folders owned by that user 
// if user is not allowed to view folder 
    // return an error letting them know 

// continue to do what you need to do with the folder 

Это позволит вам запускать ваши чеки и даже предупреждение о том, что пользователь пытался получить доступ к папке, что они не были разрешен доступ.

Один из других вариантов, который у вас здесь есть, - это использовать файлы .htaccess и .htpasswd. Это позволит вам настроить список пользователей, которым разрешено входить в папку. вы захотите создать эти файлы, когда пользователь создает новые папки. Используйте пароль пользователя и имя пользователя из базы данных при создании файла .htpasswd для пользователя.

Найти более подробную информацию об этом решении from the documentation

Смежные вопросы