Parse.com,将用户添加到创建的角色 [英] Parse.com, Adding users to created roles

查看:87
本文介绍了Parse.com,将用户添加到创建的角色的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个云代码,当用户注册时,它将创建两个帐户角色.下面是方法

I have a cloud code which creates two account roles when a user signs up. Below is the method

Parse.Cloud.afterSave("account", function(request) {
    var accountName = request.object.get("name");

    //create admin role
    var adminRoleACL = new Parse.ACL();
    adminRoleACL.setPublicWriteAccess(true);
    var adminRole = new Parse.Role(accountName + "_Administrator", adminRoleACL);
    adminRole.save() ; 

    //create user role
    var userRoleACL = new Parse.ACL();
    userRoleACL.setPublicWriteAccess(true);
    var userRole = new Parse.Role(accountName + "_User", userRoleACL);
    userRole.save();
});

现在我想要实现的是添加刚刚注册这两个角色的用户.但不幸的是,我看到在云代码中我无法获得当前用户. 所以我要做的是在从客户端创建角色之后,将用户添加到角色中.下面是相同的代码.代码执行正常,我没有看到任何错误,但是我没有看到用户被添加到数据浏览器中的角色.知道为什么会这样吗?我错过了什么吗?非常感谢您的帮助.

Now what i wanted to achieve was to add the user which just signed up to these two roles. But unfortunately i saw that in cloud code i can't get the current user. So what i did was to add the users in the role after the roles are created from the client side. Below is the code for the same. The code executes fine and i did not see any error, however i did not see the users being added to the roles in the data browser. Any idea why is this happening? Am i missing something. I would be really thankful for all your help.

user.signUp(null, {
    success : function(user) {
        var currentUser = Parse.User.current();

        var accountName = account.get("name");

        var query = new Parse.Query(Parse.Role);
        query.contains("name", accountName);

        query.find({
            success : function(roles) {
                if (!roles) {
                    alert("No roles for " + accountName + " were found");
                } else {
                    for (var i = 0; i < roles.length; i++) {
                        //add the user for admin role
                        //TODO: this needs to be done only once for the account owner
                        if (roles[i].get("name").search(USER_TYPE.ADMIN) >= 0) {
                            roles[i].getUsers().add(currentUser);
                        }

                        //add the user for user role
                        if (roles[i].get("name").search(USER_TYPE.USER) >= 0) {
                            roles[i].getUsers().add(currentUser);
                        }
                        var saved = roles[i].save();
                    }
                    alert("User was added into roles");
                }
            },
            error : function(error) {
                alert("Could not add users to the account " + accountName + " error: " + error.message);
            }
        });

        alert("User created successfully");
    },
    error : function(user, error) {
        alert("Error: " + error.code + " " + error.message);
    }
});

推荐答案

感谢您的帮助.我通过使用像这样的云代码来完成它

thanks for the help. I go it done by using a cloud code like this

  1. 在创建帐户时创建角色.

  1. Create the roles while creating the account.

Parse.Cloud.afterSave("account", function(request) {

    var accountName = request.object.get("name");
    //create admin role
    var adminRoleACL = new Parse.ACL();
    adminRoleACL.setPublicReadAccess(false);
    adminRoleACL.setPublicWriteAccess(false);
    var adminRole = new Parse.Role(accountName + "_Administrator", adminRoleACL);
    adminRole.save();

    //create user role
    var userRoleACL = new Parse.ACL();
    userRoleACL.setPublicReadAccess(false);
    userRoleACL.setPublicWriteAccess(false);
    var userRole = new Parse.Role(accountName + "_User", userRoleACL);
    userRole.save();
});

  • 然后将用户添加到创建的角色

  • Then add the users to the created role

    Parse.Cloud.define("addUsersToRole", function(request, response) {
    
        Parse.Cloud.useMasterKey();
        var currentUser = request.user;
        var accountName = request.params.accountname;
        var isAdmin = request.params.admin;
    
        var query = new Parse.Query(Parse.Role);
        query.contains("name", accountName);
        query.find({
            success : function(roles) {
                console.log("roles: " + roles.length);
                for (var i = 0; i < roles.length; i++) {
    
                    if ( isAdmin = false && roles[i].get("name").search("_Administrator") >= 0)
                        continue;
    
                    roles[i].getUsers().add(currentUser);
                    roles[i].save();
                }
                response.success();
            },
            error : function(error) {
                response.error("error adding to admin role " + error);
            }
        });
    });
    

  • 这篇关于Parse.com,将用户添加到创建的角色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆