流星管理用户无法访问所有用户集合

时间:2018-11-08 23:14:17

标签: reactjs meteor

我已将角色添加到我的用户集合。我正在尝试将所有用户集合仅发布给管理员用户,但目前只返回管理员集合。

Publish code:

Meteor.publish("users", function() {
    let result = [];
    if (Roles.userIsInRole(this.userId, ["admin"])) {
      result = Meteor.users.find({});
    } else {
      this.stop();
    }
    return result;
  });

Subscription

Meteor.subscribe("users");

添加管理员:

 if (!Meteor.users.find().count()) {
    var users = [
      { name: "Johnson Doe", email: "admin@example.com", roles: ["admin"] }
    ];

    _.each(users, function(user) {
      var id;

      id = Accounts.createUser({
        email: user.email,
        password: "password@123",
        profile: { name: user.name }
      });

      if (user.roles.length > 0) {
        Roles.addUsersToRoles(id, user.roles, "default-group");
      }
    });
  }

管理员用户是否可以访问所有其他用户集合?

1 个答案:

答案 0 :(得分:0)

在声明addUsersToRoles

之前,您应该使用userIsInRole来确保它具有管理员集合。
Roles.addUsersToRoles(userId, ['admin']);

您可以仔细检查此Usage Examples