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

时间:2015-02-21 02:36:47

标签: javascript meteor

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

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

1 个答案:

答案 0 :(得分:2)

您可以在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;
});

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

  

请注意,Roles.addUsersToRoles调用需要跟进   Accounts.createUser或Accounts.onCreate或者角色包   将无法找到用户记录(因为它尚未创建   还)

来自README

希望这有效。