如何检查用户是否在Meteor中具有特定角色

时间:2016-01-25 18:13:25

标签: templates meteor roles

我想管理我的Meteor应用程序的用户,为了做到这一点,我需要知道他们当前的角色。我有一个页面设置,只有管理员用户可以访问,并且该页面订阅了用户集合。

在我的此页面模板中,我有以下内容:

{{#each user}}
  <p>
    <a href="/@{{username}}">{{username}}</a>
    {{#if isInRole 'admin'}} Admin{{/if}}
  </p>  
{{/each}}

不幸的是,这让我遇到了一个问题,即登录用户(管理员)角色是{{#if isInRole 'admin'}}块中的比较。这导致所有用户都具有管理员状态(情况并非如此)。

如何检查each块中显示的用户是否具有特定角色?

编辑注意:我正在使用alanning / meteor-roles包

数据库中有所有用户的列表,我希望看到他们的管理员状态。

2 个答案:

答案 0 :(得分:3)

对于今后遇到此问题的任何人,我都有以下解决方案。

JavaScript的:

Template.registerHelper('isUserInRole', function(userId, role) {
  return Roles.userIsInRole(userId, role);
});

模板:

<p>
  Roles: {{#if isUserInRole _id 'webmaster'}}Webmaster {{/if}}
  {{#if isUserInRole _id 'admin'}}Admin {{/if}}
</p>

答案 1 :(得分:1)

您可以创建自己的角色检查功能,如下所示:

isAdmin = function(){
  var loggedInUser = Meteor.user();
  var result = false;
  if(loggedInUser){
    if (Roles.userIsInRole(loggedInUser, ['Admin'])){
      result = true;
    }
  }
  return result;
};

因此请将此保存在./lib/roles.js中。

您需要安装alanning:roles包才能使用此功能。