【问题标题】:How to check if a user has a specific role in Meteor如何检查用户是否在 Meteor 中具有特定角色
【发布时间】:2016-05-02 03:55:38
【问题描述】:

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

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

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

不幸的是,这给我留下了一个问题,即登录用户(即管理员)的角色与{{#if isInRole 'admin'}} 块中的比较。这会导致所有用户都拥有管理员身份(事实并非如此)。

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

编辑说明:我正在使用 alanning/meteor-roles 包

数据库中有一个所有用户的列表,我想看看他们的管理员状态。

【问题讨论】:

    标签: templates meteor roles


    【解决方案1】:

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

    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>
    

    【讨论】:

      【解决方案2】:

      您可以像这样创建自己的角色检查函数:

      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 包才能使用它。

      【讨论】:

      • 我不是要检查登录用户是否是管理员,我有一个用户集合中所有用户的列表,我想看看他们是否是管理员。跨度>
      • 没错,所以只需根据 isAdmin === true 呈现您的列表。
      • 有没有办法将此函数放入我的模板助手中?因为我已经尝试实现它但它不起作用。
      • 好的,1 秒,目前正在手机上回复。稍后会更新我的答案:-)
      猜你喜欢
      • 1970-01-01
      • 2010-12-22
      • 2019-06-16
      • 2018-11-06
      • 2021-10-25
      • 2021-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多