【问题标题】:How can I assign the first user in my Meteor app a specific role?如何为 Meteor 应用程序中的第一个用户分配特定角色?
【发布时间】:2015-02-21 11:08:40
【问题描述】:

我正在使用meteor-roles 获取权限,并且我想为创建的第一个用户添加一个特定角色。我知道我不能在onCreateUser 挂钩中使用addUsersToRoles,因为它会在数据库中查询用户ID,但尚未将用户添加到数据库中。

我发现 this answer 建议包装 createUser 方法,但这对我不起作用。服务器抱怨createUser还不支持回调。

【问题讨论】:

    标签: javascript meteor


    【解决方案1】:

    你可以在OnCreateUser上做这样的事情。

    Accounts.onCreateUser(function(options, user) {
        //if there is not users on the database
        //we assign the First-User role
      if(Meteor.users.find().count() === 0){ 
         user.role = "First-User"
      }else{
         user.role = "normalUser"
       }
      return user;
    });
    

    假设您拥有First-user 角色。像这样。

    Meteor.publish("First-User", function () {
      var user = Meteor.users.findOne({_id:this.userId});
    
      if (Roles.userIsInRole(user, ["First-User"])) {
        return Meteor.users.find({}, {fields: {emails: 1, profile: 1, roles: 1}});
      } 
    
      this.stop();
      return;
    });
    

    请记住,您应该调用 createUsers 方法顶部的 onCreateUser

    请注意,Roles.addUsersToRoles 调用需要在后面 Accounts.createUser 或 Accounts.onCreate 或角色包 将无法找到用户记录(因为尚未创建 然而)

    来自README

    希望这有效。

    【讨论】:

    • onCreateUser 挂钩有效。谢谢!不过,我不明白该出版物。在这种情况下,这对我有什么好处?
    • 没关系。我现在明白了。这是仅将用户集合交付给该用户的发布。谢谢!
    • @raddevon Awesome =D!
    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 2022-12-13
    • 2014-12-14
    • 2016-01-30
    • 2016-07-13
    相关资源
    最近更新 更多