В настоящее время я занимаюсь контролем доступа к моему API loopback3 (3.26.0) и пытаюсь ограничить доступ к свойству для всех, кроме владельца.
Допустим, у меня есть отношение Пользователь -> Атлет. С Атлетом, имеющим "secretProperty".
Я установил secretProperty в защищенное состояние, и у меня есть
Athlete.afterRemote('**', function(ctx, modelInstance, next) { // i am restricting property access here, which works for direct .find()}
Как описано здесь
Но я все ещеу меня проблема в том, что когда я запрашиваю
GET /user/{id}/athlete
, возвращаемые данные содержат мой secretProperty, и мой хук никогда не вызывается
Как мне ограничить доступ к свойству через все конечные точки? (в основном это скрытое значение, но не для определенных ролей / пользователей)
Вот определения моей модели: athlete.json
{
"name": "athlete",
"plural": "athletes",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"name": {
"type": "string",
"required": false,
"default": ""
},
"mySecretProperty": {
"type": "number",
"required": false,
"default": 0
}
},
"relations": {
"user": {
"type": "belongsTo",
"model": "user",
"foreignKey": ""
}
}
}
user.json
{
"name": "user",
"plural": "users",
"base": "User",
"idInjection": true,
"options": {
"validateUpsert": true
},
"validations": [],
"relations": {
"athlete": {
"type": "hasOne",
"model": "athlete",
"foreignKey": ""
}
}
}