【问题标题】:User roles for individual objects - Parse单个对象的用户角色 - 解析
【发布时间】:2014-06-24 14:56:08
【问题描述】:

我有一个允许用户主持私人聊天的应用程序。聊天可以是公开的(无需密码即可加入)或私人的(需要密码)。它还具有谁可以在聊天中发帖的设置(仅限主持人或任何加入的人)。我正在考虑为主持人设置“管理员”角色,为可以聊天的人设置“用户”角色,为可以查看但不能聊天的人设置“观众”。如果我为一个聊天添加一个主持人到管理员角色,他/她将成为所有聊天的管理员。如何创建角色,以便在我向其中添加用户时,它们将仅适用于一个聊天(PFObject)?

【问题讨论】:

    标签: parse-platform acl user-roles


    【解决方案1】:

    我建议创建一个云代码函数来创建聊天,并在其中创建可以添加用户的聊天特定角色。通过使用众所周知的格式 (-),您可以非常轻松地查找和管理角色成员资格。在下面的示例中,我创建了 Chat 和 admin 角色,并将当前用户(聊天的创建者)添加为 admin 角色的唯一成员(以及唯一可以修改 admin 角色的成员)。

    注意如果您计划使用指向 Chat 的指针创建 Message 类,这不会直接阻止用户创建这些对象。您可能需要一些额外的云代码(例如 beforeSave 挂钩)来强制执行。

    function createChat(name, public) {
        var chat = new Parse.Object("Chat");
        chat.set("public", public);
        chat.set("name", name);
    
        chat.save().then(function() {
            var id = chat.id;
    
            // create each role using a well-known format of <chat object id>-<role name>
            var adminRole = new Parse.Role();
            adminRole.setName(id+"-Admin");
            adminRole.relation("users").add(Parse.User.current());
    
            // add the current user (the creator
            var adminRoleAcl = new Parse.ACL();
            adminRoleAcl.setPublicWriteAccess(false);
            adminRoleAcl.setPublicReadAccess(true);
            adminRoleAcl.setWriteAccess(Parse.User.current(), true);
            adminRole.setACL(adminRoleAcl);
    
            var chatAcl = new Parse.ACL();
            chatAcl.setPublicWriteAccess(false);
            chatAcl.setPublicReadAccess(public);
            chatAcl.setRoleWriteAccess(id+"-Admin", true);
    
            chat.setACL(chatAcl);
            return Parse.Object.saveAll([adminRole, chat]);
    
        }).then(function() {
            // you'd normally have response.success() here
            console.log("done!");
        })
    }
    

    【讨论】:

      猜你喜欢
      • 2015-05-16
      • 2015-10-17
      • 1970-01-01
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多