如何为新创建的用户分配角色

时间:2013-10-02 09:38:48

标签: coffeescript meteor

我正在使用meteor-roles个软件包并静态创建用户admin@example.com,normal @ example.com,..... NOW我有一个用户可以注册的注册页面。最初我通过以下代码在客户端创建帐户,我正在使用coffeescritp:

  Accounts.createUser
    email: email
    password: password

通过这些我可以创建新用户。现在,我如何将角色分配给新创建的用户。我有角色 - 管理员,普通用户,管理用户。 在做这些时

id = Meteor.userId()
roles = "admin"
Roles.addUsersToRoles id, roles

我收到错误“Exception while delivering result of invoking 'createUser' Error {} Error: Missing 'users' param

如何动态分配角色。 提前谢谢。!!!

1 个答案:

答案 0 :(得分:2)

如果您分配角色的用户ID也是当前用户,则只能使用Meteor.userId()。在尝试使用Meteor.userLoginWith*()之前,您需要致电Roles.addUsersToRoles(Meteor.userId(), roles)

我建议创建用户,分配角色,然后将其登录。如果在分配适当角色之前登录用户,则特定于角色的路由,允许函数和发布函数可能无法正常运行。 / p>

我建议创建用户:

var userId = Accounts.createUser({
  username: 'username',
  email: 'email@email.com',
  password: 'passwordString',
  profile: {}
}); 

然后将用户添加到相应的角色:

var roles = ['admin', 'roleName']; 
Roles.addUsersToRoles(userId, roles);

然后在分配角色后最终登录。