我的网站允许用户通过连接他们的Google帐户进行申请,一旦创建帐户,他们就会被授予“待定”角色(使用alanning:roles包)。我希望管理员有table查看新申请人何时申请,管理员可以从中妥善管理用户申请(将角色更改为已接受,拒绝等)。所以,我创建了我的表,但它显示了所有用户,我想知道是否有人知道如何制作它所以只有具有“待定”角色的用户才会显示在我的表中?
这是我到目前为止所做的:
TabularTables.ManageApplications = new Tabular.Table({
name: 'ManageApplications',
collection: Meteor.users,
allow: function (userId) {
return Roles.userIsInRole(userId, 'admin');
},
autoWidth: false,
oLanguage: {
"sSearch": "Search: "
},
columns: [
{ data: //column details here },
{ data: //column details here },
{ data: //column details here },
{ data: //column details here },
{ data: //column details here },
],
});
这样可行,但它会显示每个用户(不仅仅是具有“待定”角色的用户)。
然后我创建了这个以尝试仅发布待处理用户的数据:
Meteor.publish("pendingUsers", function() {
var isAdmin = Roles.userIsInRole(this.userId, 'admin');
if (isAdmin) {
return Roles.getUsersInRole('pending').fetch();
} else {
return null;
}
});
并通过将pub: "pendingUsers",
添加到我的表中进行订阅。这有点起作用,它使它只显示“待定”角色用户的列中的数据,但是,它仍然列出每个用户,并且只有数据所在的空白区域。
如果有人知道如何实现这一目标,我将非常感谢你能给出一些见解,因为我已经坚持了很长一段时间......我相信它可能与“{{3}有关在表格自述文件中,但我不确定如何设置它。非常感谢任何示例或帮助。
答案 0 :(得分:1)
通过在我的表格中添加以下内容解决了这个问题:
source
答案 1 :(得分:0)
考虑到出版物的工作方式,您很可能会有另一个出版物和订阅,它会为您提供其他用户,但使用不同的键/字段集。由于多个发布可以同时在同一个集合上运行,因此您希望在发布所提供的客户端上执行相同的.find()
。
继续向您的表定义添加selector,如下所示:
selector: function( userId ) {
return Roles.getUsersInRole('pending');
}
您的出版物中不需要.fetch()
,Roles.getUsersInRole()
已经返回Meteor.users
的光标。
答案 2 :(得分:0)
使用选择器:https://github.com/aldeed/meteor-tabular#modifying-the-selector
如果你想检查这样一个群体的所有规则:
selector: function (userId) {
return 'roles.myrole': {$in: ['viewer', 'editor']}};
},
或只有几个:
{{1}}