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

Posted

技术标签:

【中文标题】如何检查用户是不是在 Meteor 中具有特定角色【英文标题】: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 包

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

【问题讨论】:

【参考方案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 秒,目前正在手机上回复。稍后会更新我的答案:-)

以上是关于如何检查用户是不是在 Meteor 中具有特定角色的主要内容,如果未能解决你的问题,请参考以下文章

如何检查用户是不是具有特定角色 discord.js v12? [复制]

检查提到的用户是不是在 discord.js 中具有角色

如何检查具有特定角色的成员是不是存在于 discord.js 的特定语音通道中

Discord.py - 检查用户是不是具有执行命令的特定角色

如何检查成员是不是具有特定角色

在 Mongoose 中,我有具有一对多关系的用户和角色模式。如何查询特定用户是不是具有“管理员”角色?