我使用meteor-roles获取权限,并且我想为创建的第一个用户添加特定角色。我知道我无法在addUsersToRoles
挂钩中使用onCreateUser
,因为它会在数据库中查询用户ID,但用户尚未添加到数据库中。
我发现this answer建议包装createUser
方法,但这对我不起作用。服务器抱怨createUser
尚不支持回调。
答案 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。
希望这有效。