Я работаю над музыкальным приложением, с жанрами & поджанров. Мы используем loopback для backend, а угловой JS для интерфейса с кордовой & ионной.AngularJS JavaScript SDK (lb-service.js) & ACL: какое свойство для родственной модели
не удаюсь разрешить с помощью ACL запроса, который выглядит Жанр /: ид/поджанр, для которого у меня есть proprety автоматически сделанный через фунт-service.js: Genre.subGenre()
типа соотношения в есть «hasAndBelongsToMany» для обеих моделей Жанр & Поджанры.
Вот мой угловой контроллер, который я использую в интерфейсе, чтобы сделать запрос API:
$scope.genres = [];
Genre.find().$promise.then(function(res) { //this request works : goes to GET /Genres endpoint
$scope.genres = res;
$scope.genres.forEach(function(genre) {
genre.checked=false;
genre.subgenres = [];
Genre.subGenres({id: genre.id}).$promise.then(function(r){ //it is this one that doesn't work, GET /Genres/:id/SubGenre endpoint
genre.subgenres = r;
genre.subgenres.forEach(function(s){
s.checked=false;
});
});
});
});
здесь код в фунтах-service.js, которые обеспечивают свойство Genre.subGenre():
// INTERNAL. Use SubGenre.genres() instead.
"prototype$__get__genres": {
isArray: true,
url: urlBase + "/SubGenres/:id/genres",
method: "GET"
},
и вот код в жанре модели санкционировать-доступ к API для Genre.subGenre() свойство:
"acls": [
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "DENY"
},
{
"accessType": "EXECUTE",
"principalType": "ROLE",
"principalId": "$authenticated",
"permission": "ALLOW",
"property": "subGenres" // this is to authorize Genre.subGenre(), doesn't works => 401 error.
},
{
"accessType": "EXECUTE",
"principalType": "ROLE",
"principalId": "$authenticated",
"permission": "ALLOW",
"property": "find" // this is to authorize Genre.find(), it works
}
Похоже, что это свойство неверно, потому что, когда я делаю то же самое, чтобы разрешить запрос Genre.find(), он работает.
Большое спасибо за помощь.