我想管理我的Meteor应用程序的用户,为了做到这一点,我需要知道他们当前的角色。我有一个页面设置,只有管理员用户可以访问,并且该页面订阅了用户集合。
在我的此页面模板中,我有以下内容:
{{#each user}}
<p>
<a href="/@{{username}}">{{username}}</a>
{{#if isInRole 'admin'}} Admin{{/if}}
</p>
{{/each}}
不幸的是,这让我遇到了一个问题,即登录用户(管理员)角色是{{#if isInRole 'admin'}}
块中的比较。这导致所有用户都具有管理员状态(情况并非如此)。
如何检查each
块中显示的用户是否具有特定角色?
编辑注意:我正在使用alanning / meteor-roles包
数据库中有所有用户的列表,我希望看到他们的管理员状态。
答案 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包才能使用此功能。