如何为Meteor应用程序中的第一个用户分配特定角色

How can I assign the first user in my Meteor app a specific role?

本文关键字:用户 第一个 分配 定角色 Meteor 应用程序      更新时间:2024-03-15

我使用流星角色作为权限,我想为创建的第一个用户添加一个特定的角色。我知道我不能在onCreateUser钩子中使用addUsersToRoles,因为它在数据库中查询用户ID,但用户尚未添加到数据库中。

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

您可以在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或else角色包将找不到用户记录(因为它尚未创建然而)

来自自述。

希望这能奏效。