这里就是我想实现但不知何故,我坚持,我不知道什么是正确的做法,我找不到这样的情况下任何好的例子,所以我我正在寻求你的帮助。parse.com继承的ACL +角色 - afterSave或beforeSave,棘手的场景
每个注册用户可以添加新对象类别“列表”。一旦创建新项目,我调用afterSave函数并分配适当的ACL创建新角色(“membersOf_”+ List.id)。接下来,用户可以将新对象添加到类“Items”中,它将存储List.id作为引用,并且项目的ACL应该从列表继承。列表和项目可以在他们选择的多个用户之间共享。还有在这种情况下一些问题:
- 创建新表时,我需要创建新的角色和分配创建者,并创建列表中添加这种角色
- 创建新项目的时候,我需要通过名单.ID作为有效载荷,并通过第一检查与云代码验证,如果当前用户可以创建这样的项目(分配到指定的目录),如果他有适当的权限列出
- 如果权限检查是确定的,我需要给这个项目相同的ACL如清单已与节约
继续这里是我的afterSa适用于List,正确创建角色并将ACL分配给List对象。 (1)我失踪加入这个角色给用户(创作者)
Parse.Cloud.afterSave("List", function(request, response) {
var list = request.object;
var user = Parse.User.current();
if (list.existed()) {
// quit on update, proceed on create
return;
}
var roleName = "membersOf_" + list.id;
var listRole = new Parse.Role(roleName, new Parse.ACL(user));
return listRole.save().then(function(listRole) {
var acl = new Parse.ACL();
acl.setPublicReadAccess(false);
acl.setPublicWriteAccess(false);
acl.setReadAccess(listRole, true);
acl.setWriteAccess(listRole, true);
var itemData = new Parse.Object("List", {
ACL: acl
});
return itemData.save('objectId', list.id);
});
// to do - add user to this role too
});
这里是我的项目beforeSave来验证,如果用户实际上可以创建这样的对象,我检查他是否可以查询目录表,如果他得到> 0这样的List的结果意味着他可以添加分配给此列表的项目。 (2)缺少ACL继承
Parse.Cloud.beforeSave("Item", function(request, response) {
var item = request.object;
var listId = request.object.get("list");
var user = Parse.User.current();
var List = Parse.Object.extend("List");
var query = new Parse.Query(List);
query.equalTo("objectId", listId);
query.first({
success: function(list) {
if (list.id) {
response.success();
}
else {
response.error('No such list or you don\'t have permission to perform this operation.');
}
},
error: function(error) {
response.error(error);
}
});
});
有人可以指我正确的解决方案或帮助解决这个难题吗?我失踪两件事情: - (1)我需要添加用户(创建者)在afterSave 创建新的角色 - (2)我需要将相同的ACL添加到项目,从List对象
我继承它尝试了很多事情,在afterSave中传递ACL后,在beforeSave中修改有效载荷。许多不同的功能遵循文档和不同的例子,但仍然没有运气。 任何建议都会很棒!
喜@lokers,其它的方法是将所说的“VAR ACL = list.getACL(); itemData.setACL(ACL);” – matus 2015-01-04 22:49:09