Meteor 在社交网络中注册/登录时如何分配用户角色?

Meteor 在社交网络中注册/登录时如何分配用户角色?,meteor,meteor-accounts,Meteor,Meteor Accounts,我正在使用社交帐户服务为我的应用程序提供各种社交网络的注册/登录。是否可以将使用社交登录的用户分配到角色和/或组?我已经查看了accounts角色包和其他地方,但我不知道在哪里添加挂钩,在哪里定义角色,等等。Meteor.users集合与任何其他集合一样,社交帐户服务所做的唯一事情就是向该集合添加一个用户,并向您的用户添加一个facebook/twitter/github对象,其中包含一些特定于社交网络的信息。您可以像编辑普通的帐户密码用户帐户一样对其进行编辑,并向其添加任何额外数据,如角色。您

我正在使用社交帐户服务为我的应用程序提供各种社交网络的注册/登录。是否可以将使用社交登录的用户分配到角色和/或组?我已经查看了accounts角色包和其他地方,但我不知道在哪里添加挂钩,在哪里定义角色,等等。

Meteor.users集合与任何其他集合一样,社交帐户服务所做的唯一事情就是向该集合添加一个用户,并向您的用户添加一个facebook/twitter/github对象,其中包含一些特定于社交网络的信息。您可以像编辑普通的
帐户密码
用户帐户一样对其进行编辑,并向其添加任何额外数据,如角色。您可以使用
Accounts.onCreateUser
方法添加默认角色,然后像这样调整角色:

Accounts.onCreateUser(function(options, user) {
  user.role = "standard"
  return user;
});
默认情况下,用户对象仅限于概要文件对象,因此如果要使用已添加到用户对象的新角色数据,则需要对其进行正常发布/订阅。或者,如果不想这样做,可以将角色添加到配置文件对象:

Accounts.onCreateUser(function(options, user) {
  user.profile.role = "standard"
  return user;
});

然后确保不允许客户端调用使用允许/拒绝规则对其进行编辑。我猜你不希望人们想改变他们的角色

谢谢,杰夫。我不知道在哪里添加onCreateUser方法。似乎我能找到的每一个流星例子都比较老,而且每个人都使用不同的dir结构。该方法是否属于Meteor.startup?我为这些问题道歉,但我才刚开始。嘿,雷,你可以把它放在服务器上的任何地方,我自己已经在服务器上创建了一个
accounts.js
文件,并把它放在那里。它不需要在Meteor.startup上,因为它在启动时运行,所以在创建用户时调用此函数。以下是文档中的详细信息:请确保将其放在项目的服务器文件夹中。如果您使用,请查看,包括两个未选择的答案。如果您希望每个用户都具有相同的角色,则此选项有效;如果您希望用户具有不同的角色,则此选项无效。似乎没有通过
loginWithSocialService
调用传递信息以动态确定用户角色的方法