Symfony обработка доступа к указанным c папкам зависит от пользователя, вошедшего в систему - PullRequest
0 голосов
/ 08 апреля 2020

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

Каждый пользователь может управлять файлами только в своей указанной c пользовательской папке, которая (очевидно) находится не в папке publi c, а по какому-то пути, например

../data/images/[user_id]/

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

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

1 Ответ

0 голосов
/ 08 апреля 2020

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

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

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

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

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

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

...