如何在Meteor Js中对用户角色进行分组

时间:2015-12-17 04:00:33

标签: meteor

有人可以帮我解决这个问题吗?我想分配多个用户成为每个类别的管理员。

例如我有收藏品:

User:{emily, bob, roberts, alex}

Category:{Laptop, Computer, Tablet, Network}

如何为emily分配角色以成为笔记本电脑和计算机的管理员?此外,鲍勃和亚历克斯是网络管理员?

你的善意和帮助真的很感激。谢谢.. :))

1 个答案:

答案 0 :(得分:0)

我知道这有点老了。但如果有人在搜索类似的内容。

让我们假设您的用户在这样的用户集合中。

var emily = Meteor.users.findOne({name: "Emily"});
var bob = Meteor.users.findOne({name: "Bob"});
var roberts = Meteor.users.findOne({name: "Roberts"});
var alex = Meteor.users.findOne({name: "Alex"});

然后你可以把用户放到这样的角色:

Roles.addUsersToRoles(emily._id, ['Laptop', 'Computer'], 'admin');
Roles.addUsersToRoles(bob._id, ['Network'], 'admin');
Roles.addUsersToRoles(alex._id, ['Network'], 'admin');

如果您查看用户集合的Emily记录,您会看到Emily的角色:

"roles" : {
        "admin" : [
                "Laptop",
                "Computer"

        ]
}

然后,如果您想检查用户是否为某个组的管理员,您可以尝试:

如果 Roles.userIsInRole(emily._id,'Laptop','admin')// == true Roles.userIsInRole(emily._id,'Network','admin')// == false Roles.userIsInRole(bob._id,'Laptop','admin')// == false Roles.userIsInRole(bob._id,'Network','admin')// == true

或来自模板

{{#if isInRole 'Computers' 'admin'}}
{{/if}}

如果您在db

中有类别
var network_category = Categories.findOne({..})

Roles.userIsInRole(bob._id, network_category.name, 'admin') // == true