根据Parse Relation字段设置对象的ACL

时间:2016-01-23 04:48:25

标签: parse-platform cloud-code

我有两个Parse Classes Group Post 群组有一个解析关系字段(用户,在此群组中),帖子有一个指针字段(这个帖子属于哪个组。)

当有人创建群组时,他/她将他的朋友添加到该群组中,这些群组正在保存在"人员"字段。

处于人际关系中的每个人都可以在小组中发帖。

我对在post和group对象上设置ACL有一些疑问。

  1. 保存组对象时。如何根据" people"设置其acl beforeSave中的(解析关系字段)(我不想在客户端设置ACL)?
  2. 当组中的某个帖子中,post对象的acl也应该基于解析关系字段" people"来自" Group"类。 **请注意,我希望post对象的acl应该是动态的,当某人稍后加入群组时,他/她应该能够看到他/她加入日期之前的帖子
  3. 
    
    Parse.Cloud.beforeSave(POST, function(request, response){
    	Parse.Cloud.useMasterKey();
    	
    	var post = request.object;
    	var owner = post.get("owner");
    	var community = post.get("group")
    	var draft = post.get("draft");
    	
    	if (!owner || !draft || !community) return response.error(PARAMETERS_NOT_FOUND);
    	if (draft.length <1) return response.error(FIELD_SIZE_LIMIT_NOT_ENOUGH)
    
    	var community = validateCommunity(community.id);
    	if (!community) return response.error(FAKE_COMMUNITY);	
      
        var people_to_share = community.relation("people");
        
        var acl = new Parse.ACL();
        acl.setWriteAccess(owner, true);
        acl.setReadAccess(owner, true);
      
        // Now here i want to set the acl of post for all people_to_share .... And that is working good ... but the problem is when i add new person in community (people field) .... I have to do set acl for him in every post of community. 
    	
    post.setACL(acl);
    response.success();
    
    });
    &#13;
    &#13;
    &#13;

1 个答案:

答案 0 :(得分:0)

是。我用一个共同的角色解决了这个问题。 我为每个组创建了一个角色,并将其作为指针保存在Group Class中。每当将新人添加到组中时。我给他读取该组角色的权限。并从该组中删除人员。我删除了他的阅读权限。

同样,当创建新帖子时,我只是将帖子的acl设置为该组的角色。这是一种很好的动态方式。