Meteor中新Web应用程序上的用户访问管理

时间:2016-01-22 15:27:20

标签: javascript meteor meteor-blaze meteor-autoform

我正在寻找管理用户权限和查看应用程序内容的解决方案。





我的目标是:


&#xA ;
    

  • 查看不同页面到不同的已登录用户组
  • 

  • 我需要通过管理员帐户管理这些组
  • 

  • 然后,网络应用程序将检查用户权限并为每个组准备特殊页面
  • 





我花了一些时间但找不到好的模块对于那个解决方案并决定创建我自己的管理面板和包含用户权限的集合。





此刻我遇到快速表单问题,它没有显示我的一半值:




  Meteor.publish('allUsers',function(){
返回Meteor.users.find({})&#xA ;});
 Meteor.publish('userAcCardS',function(){
 return RoleCard.find({userId:this.userId});
});
& #xA;< template name =“singleUser”>
 < h1 class =“page-title”> user  -  {{_id}}< i class =“fa fa-pencil”>< / i>< / h1>
 < H3> 
 -  {{RCList._id}}  -  {{RCList.name}}  -  {{RCList.isAdmin}}  - 

 {{#if RCList}}
 {{> quickForm id =“update_card”collection =“RoleCard”doc = this type =“update”}}
 {{其他}}
 noth {{> quickForm id =“new_card”collection =“RoleCard”type =“insert”}}
 {{/如果}}
 < / h3>
< / template>

 Template.singleUser.onCreated(function(){
 var self = this;
 self.autorun(function (){
 self.subscribe('userAcCardS');
});
});

 Template.singleUser.helpers({
 userEmail :function(){
 return this.emails \ [0 \]。address;
},
 RCList:function(){
 return RoleCard.findOne({userId:this ._id});
}
});
  




但我只看到这一点:









那有什么不对?如果你知道的话,也许你可以给我建议使用像Meteor包这样的另一个解决方案吗?





或许你可以告诉我如何基于“RCList”渲染autoform,如果可能的话,可以为RoleCard集合提供更改吗?我是流星和js的新手......




1 个答案:

答案 0 :(得分:0)

最受欢迎的角色包是alanning:roles包。它允许您控制用户角色并根据这些角色限制访问。使用此命令为项目安装它:

meteor add alanning:roles

以下是限制发布数据的示例:

Meteor.publish('secrets', function (group) {
    if (Roles.userIsInRole(this.userId, ['view-secrets','admin'], group)) {
        return Meteor.secrets.find({group: group});
    } else {
        // user not authorized. do not publish secrets
        this.stop();
        return;
    }
});

限制在客户端上看到的内容的示例:

<template name="header">
    ... regular header stuff
    {{#if isInRole 'admin'}}
        {{> admin_nav}}  
    {{/if}}
    {{#if isInRole 'admin,editor'}}
        {{> editor_stuff}}
    {{/if}}
</template>