仅显示在流星表格表中具有特定角色的用户

时间:2016-04-02 16:04:16

标签: meteor datatables aldeed-tabular

我的网站允许用户通过连接他们的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}有关在表格自述文件中,但我不确定如何设置它。非常感谢任何示例或帮助。

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}}