Управление доступом для пользователя в новом веб-приложении в Meteor

Ищу решения с управлением правами пользователей и доступом для просмотра содержимого приложения.

Моя цель:

  • просматривать разные страницы для разных групп зарегистрированных пользователей
  • Мне нужно управлять этими группами с помощью учетной записи администратора
  • затем веб-приложение проверит права пользователей и подготовит специальную страницу для каждой из групп.

Я трачу некоторое время, но не могу найти подходящие модули для этого решения. И решаю создать свою админ-панель и коллекцию, которая будет содержать права пользователей.

На данный момент у меня проблема с быстрой формой, она не показывает мне половину значений:

Meteor.publish('allUsers',function(){
    return Meteor.users.find({})
});
Meteor.publish('userAcCardS',function(){
    return RoleCard.find({userId: this.userId});
});

<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"}}
  {{else}}
  noth {{> quickForm id="new_card" collection="RoleCard" type="insert"}}
  {{/if}}
   </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", которая может вносить изменения в коллекцию RoleCard, если это возможно? Я новичок в метеоре и js ...


person Антон Жучков    schedule 22.01.2016    source источник


Ответы (1)


Самый популярный пакет ролей - это пакет 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>
person Brett McLain    schedule 22.01.2016