Обработка доступа Symfony для определенных папок в зависимости от вошедшего в систему пользователя

В приложении Symfony 5.0 мне нужно интегрировать файловый менеджер, который обеспечивает базовую обработку файлов для пользователей.

Каждому пользователю разрешено управлять файлами только в своей конкретной пользовательской папке, которая (очевидно) находится не в общей папке, а по некоторому пути, например

../data/images/[user_id]/

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

Как я могу определить правила доступа в symfony, чтобы определить это поведение для предоставления доступа к определенному, но динамическому пути, который зависит от текущего пользователя, вошедшего в систему?

1 ответ

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

Вы можете создать many to many или many to one отношения между user а также directoryорганизация. Это отношение сопоставляет каталог с его владельцем

  • Если у каждого пользователя есть каталог, вы можете создать его непосредственно при создании пользователя.
  • Если у пользователя не может быть каталога, вы можете создать каталог только тогда, когда он решит создать его.
  • Если у пользователя может быть несколько каталогов (отношение "многие ко многим"), вам придется создавать каталог каждый раз, когда пользователь решает создать его.

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

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

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

Другие вопросы по тегам