Как реализовать функцию поиска на основе разрешений пользователя с помощью Laravel Scout

Я пытаюсь создать функцию поиска, которая позволит пользователям искать все файлы, к которым у них есть доступ. До сих пор я пытался использовать Scout, но, похоже, он не предназначен для таких сложных запросов. Многие примеры, которые я вижу о Scout, в основном тривиальны, например, случай использования, когда у вас есть блог, и вы хотите найти статью в блоге по названию без неопубликованных статей. Но это не зависит от прав доступа вошедшего в систему пользователя. Как насчет случаев, когда у вас могут быть разные индексы в зависимости от поиска пользователя?

Вот конкретный пример того, что я хочу реализовать.

введите здесь описание изображения

На этом изображении мы показываем пользователей, имеющих доступ к различным проектам и проектам, содержащим несколько файлов. В этом примере пользователь W имеет доступ к проекту A и проекту B и, таким образом, имеет доступ к файлам от A до E. Когда пользователь W выполняет поиск в веб-приложении, файл F никогда не должен появляться в результатах поиска.

  • Пользователь X не должен видеть никаких файловых результатов.
  • Пользователь Y -> Файл от A до F
  • Пользователь Z -> Файл от D до F

Является ли Laravel Scout хорошим кандидатом на такую ​​функцию расширенного поиска?

Если нет, то как реализовать такую ​​функцию? Где я должен искать, чтобы начать?


person Lunfel    schedule 20.08.2019    source источник


Ответы (1)


Я считаю, что вам не нужно несколько индексов в вашем случае. Просто добавьте поле «имя_проекта» в свой файловый документ или создайте несколько полей, например project_a: true. А затем создайте поиск, например File::search('project_a = true')

Вы можете использовать этот пакет для создания сложных запросов или даже поиска по нескольким индексам https://github.com/matchish/laravel-scout-elasticsearch

person matchish    schedule 26.08.2019