gpt4 book ai didi

parse-platform - Parse.com,将用户添加到创建的角色

转载 作者:行者123 更新时间:2023-12-04 18:22:45 24 4
gpt4 key购买 nike

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

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();
});

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

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);
}
});

最佳答案

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

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

    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();
    });
  2. 然后将用户添加到创建的角色

    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-platform - Parse.com,将用户添加到创建的角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18970416/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com