如何为Meteor应用程序中的第一个用户分配特定角色
How can I assign the first user in my Meteor app a specific role?
我使用流星角色作为权限,我想为创建的第一个用户添加一个特定的角色。我知道我不能在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角色包将找不到用户记录(因为它尚未创建然而)
来自自述。
希望这能奏效。
相关文章:
- 而循环只设置php中输入字段中的第一个值
- 错误:$injector:modulerr模块错误(我的第一个SPA应用程序)
- IE11中的第二个调用取消了第一个Fetch API调用
- Javascript XMLHttpRequest——只有第一个POST请求有效
- 使用javascript或angularjs特定过滤器搜索字符串中第一个img标记的json值
- 将OnClick函数设置为<ul>,最后一个ul是擦除第一个ul-s
- RxJS油门行为;立即获取第一个值
- Angular UI网格:如何通过第一个UI网格中的按钮使第二个UI网格可见
- 选择多个实例中的第一个
- 如何在调用下一个请求之前完成第一个Ajax Get请求
- Lodash:返回对象的第一个键,该对象的值(即数组)中有一个给定的元素(即字符串)
- 看起来第一个console.log是'It’不太对
- 与杜兰达尔合作的第一个JavaScript项目.尝试从第三方 API 获取数据
- 节点发布错误对象的第一个“属性”
- Javascript:表单验证getElementById仅返回第一个id元素
- 仅将 CSS 规则应用于
中的第一个 ,而不分配类/ID - JS在隐藏未定义的值后仅从数组中返回第一个id的值
- 高图表,检测点是否在堆栈中的第一个
- 如何要求用户输入一个介于 1 和 50 之间的整数,然后小程序打印出一行这个星数
- json结果显示第一个值