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

2023-12-29

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

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);
            }
        });
    });
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Parse.com,将用户添加到创建的角色 的相关文章

随机推荐

  • 使用 PHP 更改 CSS 值

    例如 我有这个 CSS 脚本 然后 我想将标题值更改为 这些值存储在数据库中 让我困惑的是哪一个应该是最好的选择 使用 PHP 脚本或 CSS 甚至 javascript 我希望它根据数据库中的 CSS 值进行更改 我可以在需要时再次更改
  • 在android中旋转图像时调整图像大小

    我正在处理 android 项目 在该项目中我想旋转图像并触摸到某个固定的枢轴点 我已经完成了所有这些事情 但我面临一个问题 当我尝试旋转图像时 图像位图被调整大小 我不知道为什么会发生 如果有人有的话请给我一个想法来帮助解决这个问题 my
  • 如何从控制台运行twisted?

    我在 Windows 7 上使用 Python 3 和 Anaconda 我安装了 Twistedconda install twisted 现在我正在尝试运行twisted or twistd 从控制台 但我收到此错误 twisted 不
  • 如何使用 Javascript 从 CDN 加载外部 css 文件?

    简而言之 我想在 a 上加载 bootstrap css 文件web page https secure helpscout net members register 13 在互联网上 不是在我的网站上 在浏览器控制台中使用 Javascr
  • 在 Internet Explorer 中添加事件监听器

    Internet Explorer 9 中的元素对象相当于什么 if Element prototype addEventListener Element prototype addEventListener function 它在 Int
  • 什么情况下需要调用两次GC.Collect

    我们有一个 WPF 应用程序 基于 Unity 具有 MMVVVM 模式 在应用程序生命周期中可以有多个项目生命周期 在每个项目生命周期之后我们都会进行手动 Tear Down 并尝试释放 ViewModel 的所有引用 对于 Unity
  • 写入 PIC 上的 EEPROM

    这里有PIC单片机编程器吗 我正在学习一些使用 pickit2 和它附带的 16F690 芯片的 PIC 微控制器编程 我目前正在尝试各种设施 我可以成功read如果我在 MPLAB 中设置 EEPROM vaklue 则代码中来自 EEP
  • Pushwoosh 无法在 Unity 的发布版本中工作

    我试图将 Pushwoosh 与 Unity 集成 最新版本需要我实际使用 Pro Guard 和 gradle 因为存在 multidex 错误 之后 由于 proguard 出现了重复文件错误 我通过创建 proguard user t
  • 无法弄清楚为什么模型在回发时为空?

    我是 ASP NET MVC 的新手 我正在尝试创建一个非常简单的博客类型网站作为学习一切工作原理的方法 但是 当我从评论表单发布到空模型时遇到问题 我不知道为什么 在博客文章页面上 我有一个 添加评论 链接 它调用一些 JQuery 来呈
  • 在 Qt Creator 中运行纯 C 项目

    我使用 qt Creator 创建了一个普通的 c 项目文件 gt 新文件或项目 gt 非 Qt 项目 gt 普通 C 项目 main c include
  • Maps V2 InfoWindow 中的动态内容

    我想在 Maps V2 片段中的标记上显示信息窗口 问题是 我想显示从网络动态加载的位图通用图像下载器 https github com nostra13 Android Universal Image Loader 这是我的 InfoWi
  • PHPUnit 启用颜色输出

    我正在 Windows 7 上从命令行运行 PHPUnit 我尝试通过以下方式启用颜色输出phpunit color 但它仍然显示相同 没有颜色输出 如何在 Win7 上从命令行获取 PHPUnit 的颜色输出 你将不得不使用http so
  • Aeson:派生结构的某些(但不是全部)字段

    我有一个大型结构 我需要它是 FromJSON 的实例 以便我可以将 json 数据解析到其中 我想自动派生 但单个字段需要 特别小心 因为它是 json 中的一个对象 并且我希望它是我的结构中的值的数组 如何在不编写重复所有字段的巨大 F
  • 如何从角度 6 的数组中删除重复的对象

    我正在尝试删除数组中的重复值对象 但不起作用 我认为重复函数正在起作用 但没有反映在li列表 你能找出我需要改变的地方吗 我的服务文件 addComp Names c this item push name Names componenti
  • NTFS 性能和大量文件和目录

    采用 NTFS 的 Windows 如何处理大量文件和目录 在遇到性能问题或其他问题之前 是否有关于可以放置在单个目录中的文件或目录限制的任何指导 例如 拥有一个包含 100 000 个文件夹的文件夹可以吗 以下是来自某个环境中的一些建议
  • Outlook-根据vba规则将邮件导出为文本

    我很确定以前已经这样做过 有谁知道如何将电子邮件导出到我的 C 驱动器上的文本文件中 我知道如何将电子邮件移动到 Outlook 中但在我的 C 驱动器上的其他文件夹中 Thanks 查看MailItem SaveAs方法 您指定路径和文件
  • 清单合并失败。添加并链接react-native-device-info后

    清单合并失败 属性元数据 android support VERSION value value 26 0 1 来自 com android support cardview v7 25 3 1 AndroidManifest xml 24
  • SqlRoleProvider:调用 Roles.GetRolesForUser 时出现 NullReferenceException

    设想 使用 SqlRoleProvider 对 Sql Server 2012 数据库服务器进行身份验证的 WCF 服务 WCF 托管在 IIS7 Web 服务器上 请看这个错误 System NullReferenceException
  • 将请求从一个jsp转发到另一个jsp并包含所有请求参数?

    我有这种情况 用户在浏览器中的jsp表单上输入一些内容并提交 在 servlet 中 我处理请求并向刚刚继续的客户端显示 jsp page1 按钮 现在单击 继续 我想将此请求转发到另一个 jsp page2 其中所有请求参数都出现在 pa
  • Parse.com,将用户添加到创建的角色

    我有一个云代码 它在用户注册时创建两个帐户角色 下面是方法 Parse Cloud afterSave account function request var accountName request object get name cre