Как ограничить данные, которые поступают от вызова «find» модели в loopback 3 на основе примененного acl? - PullRequest
0 голосов
/ 13 февраля 2019

Рассматриваются три модели с соответствующими полями для этого вопроса:
Пользователь - идентификатор
Проект - идентификатор, имя_проекта
ProjectMember - идентификатор, идентификатор_пользователя, идентификатор_проекта

КогдаЯ звоню "найти", в нем перечислены все проекты, что хорошо для пользователя, который является "администратором", но для пользователя "не администратора", я хочу показать только их проект.

Каков наилучший способ добиться этого в loopback 3?Нужно ли мне переопределить «поиск» или есть какой-то петлевой способ сделать это, которого мне не хватает?

1 Ответ

0 голосов
/ 13 февраля 2019

Я бы пошел на before remote хук:

Project.beforeRemote( 'find', function( ctx, next) {
    // here you can modify your query by adding a role based filter to your query
    next();
});

Или даже лучше access операционный хук:

Project.observe('access', function( ctx, next) {
    // here you can modify your query by adding a role based filter to your query
    next();
});

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

...