Может ли loopback js ограничивать использование, включать фильтры в API для определенных моделей и ролей?
Вы можете отключить включение связанных моделей на основе отношений. Например, встроенное отношение Пользователь имеет много экземпляров AccessToken отключает включение маркеров доступа при запросах пользователей. Перекрестная публикация примера конфигурации из наших документов:
{
"name": "CustomUser",
"base": "User",
// ...
"relations": {
"accessTokens": {
"type": "hasMany",
"model": "AccessToken",
"foreignKey": "userId",
"options": {
"disableInclude": true // <<< THIS IS THE CONFIG FLAG TO SET
}
}
},
// ...
}
AFAIK, нет встроенного API для отключения фильтров включения для определенных ролей.
Эту функцию можно реализовать с помощью ловушки beforeRemote
и / или ловушки операций access
. Идея состоит в том, чтобы реализовать хук, который будет проверять роль текущего пользователя и изменять аргумент filter
для удаления запрещенных включений.
Еще одна опция, которая приходит мне в голову: отключить включение связанных моделей на уровне отношений для всех пользователей. Предоставьте пользовательскую реализацию функции find
, которая будет извлекать связанные модели вручную и только тогда, когда авторизованный пользователь имеет разрешения для этого:
- Отключить встроенный метод
find
, см. Отключение удаленного метода
- Укажите свой собственный удаленный метод, который отображается в
GET /api/users
, см. Как добавить удаленный метод в модель
Могу ли я ограничить возможность получения не связанных предметов для текущего пользователя, включив api в loopback js?
AFAIK, разрешения LoopBack не работают на уровне filter.include
.