Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Parse platform 单个对象的用户角色-解析_Parse Platform_Acl_User Roles - Fatal编程技术网

Parse platform 单个对象的用户角色-解析

Parse platform 单个对象的用户角色-解析,parse-platform,acl,user-roles,Parse Platform,Acl,User Roles,我有一个允许用户主持私人聊天的应用程序。聊天可以是公开的(没有密码加入)或私人的(需要密码)。它还设置了谁可以在聊天中发帖(只有主机或任何加入的人)。我想为主机设置一个“管理员”角色,为可以聊天的用户设置一个“用户”角色,为可以查看但不能聊天的用户设置一个“旁观者”。如果我为一次聊天的管理员角色添加主机,则他/她将成为所有聊天的管理员。如何创建角色,以便在向其添加用户时,他们将仅应用于一个聊天室(PFObject)?我建议创建一个云代码函数来创建聊天室,并在其中创建聊天室特定的角色,您可以向其中

我有一个允许用户主持私人聊天的应用程序。聊天可以是公开的(没有密码加入)或私人的(需要密码)。它还设置了谁可以在聊天中发帖(只有主机或任何加入的人)。我想为主机设置一个“管理员”角色,为可以聊天的用户设置一个“用户”角色,为可以查看但不能聊天的用户设置一个“旁观者”。如果我为一次聊天的管理员角色添加主机,则他/她将成为所有聊天的管理员。如何创建角色,以便在向其添加用户时,他们将仅应用于一个聊天室(PFObject)?

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

注意:如果您计划创建一个带有聊天指针的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!");
    })
}
函数createChat(名称,公共){
var chat=新的Parse.Object(“chat”);
chat.set(“public”,public);
chat.set(“name”,name);
chat.save().then(函数()){
var id=chat.id;
//使用已知的格式创建每个角色-
var adminRole=new Parse.Role();
adminRole.setName(id+“-Admin”);
adminRole.relation(“users”).add(Parse.User.current());
//添加当前用户(创建者)
var adminRoleAcl=new Parse.ACL();
AdminRoleCal.setPublicWriteAccess(false);
AdminRoleCal.setPublicReadAccess(true);
adminRoleAcl.setWriteAccess(Parse.User.current(),true);
adminRole.setACL(adminRoleAcl);
var chatAcl=new Parse.ACL();
chatAcl.setPublicWriteAccess(false);
chatAcl.setPublicReadAccess(公共);
chatAcl.setRoleWriteAccess(id+“-Admin”,true);
chat.setACL(chatAcl);
返回Parse.Object.saveAll([adminRole,chat]);
}).然后(函数(){
//这里通常会有response.success()
console.log(“完成!”);
})
}