2015-07-03 4 views
1

Я работаю над музыкальным приложением, с жанрами & поджанров. Мы используем 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(), он работает.

Большое спасибо за помощь.

ответ

0

На самом деле я понял, что мне просто нужно изменить в ACL:

"accessType": "EXECUTE" 

в

'"accessType": "READ"