你如何删除Meteor中的用户帐户?

时间:2013-06-10 12:48:53

标签: meteor

我发现在meteor中删除用户帐户的唯一方法(除了使用mrt reset清空数据库),实际上是登录到该特定用户帐户,并使用以下命令从控制台删除帐户:

Meteor.users.remove('the user id');  

但就像我说的那样,我需要以特定用户身份登录,并且无法找到能够从db中删除任何用户的解决方案。我确定它与权限或角色有关,但我不知道如何继续/什么是最佳解决方案/如何为特定用户设置管理角色,以便我可以删除不同的用户帐户。

4 个答案:

答案 0 :(得分:20)

你可以做到

meteor mongo

已部署的应用

meteor mongo myapp.meteor.com

然后

db.users.remove({_id:<user id>});

我不推荐它,但如果你想删除任何用户而没有从meteor登录,你需要修改允许规则。但删除用户是一个非常不可能的事件,因此上述可能是最好的方法。

无论如何,如果你想要,修改Meteor.users.allow({remove:function() { return true });属性。见http://docs.meteor.com/#allow。你可以在那里添加一些自定义逻辑,所以如果你是管理员那么它只会让你这样做

答案 1 :(得分:9)

我在nitrous.io上做这件事时遇到了麻烦,因为我无法打开Meteor和Mongo。我说:

Meteor.users.remove(' the _id of the user ');

在isServer部分中删除用户。

答案 2 :(得分:3)

如果有人仍在寻找这个问题的答案,我在下面概述了我的解决方案。

当我创建新用户时,我在用户文档中添加了一个名为role的字段。如果我希望用户能够从Meteor.users集合中删除其他用户,我会授予他administrator的角色权限。如果没有,我给他一个member的角色。所以,我的用户文档看起来像这样 -

{
  "_id" : ...,
  "createdAt" : ...,
  "services" : {...},
  "username" : "test",
  "profile" : {
    "name" : "Test Name",
    "role" : "administrator"
  }
}


在客户端上,我有一个用户列表(使用#each模板标记添加),每个用户旁边都有一个删除按钮。用户必须登录才能看到此列表。我为删除按钮定义了一个事件处理程序 -

'click #remove-user-btn': function () {
  Meteor.users.remove({ _id: this._id }, function (error, result) {
    if (error) {
      console.log("Error removing user: ", error);
    } else {
      console.log("Number of users removed: " + result);
    }
  })
}


但是,Meteor.users默认情况下不允许从客户端删除操作。因此,您必须编辑服务器中的Meteor.users.allow回调,如下所示,以允许从客户端删除用户。但我们需要确保只有具有管理员角色的用户才能获得此权限。

Meteor.users.allow({
  remove: function (userId, doc) {
    var currentUser, userRole;
    currentUser = Meteor.users.findOne({ _id: userId }, { fields: { 'profile.role': 1 } });
    userRole = currentUser.profile && currentUser.profile.role;
    if (userRole === "administrator" && userId !== doc._id) {
      console.log("Access granted. You are an administrator and you are not trying to delete your own document.");
      return true;
    } else {
      console.log("Access denied. You are not an administrator or you are trying to delete your own document.");
      return false;
    }
  },
  fetch: []
});

这是一般的想法。您可以在此基础上进行构建,以满足您的需求。

答案 3 :(得分:0)

以下是通过控制台从mongo中删除用户的步骤: 第1步:打开新控制台 第2步:将diretory更改为您的应用程序,例如(cd myapp) 第3步:输入命令 meteor mongo 第4步:确保存在一个名为users的表,db.users.find({}); 步骤5:找到您要删除的用户的用户标识并键入 db.users.remove({_ ID:&#34; nRXJCC9wTx5x6wSP2&#34;}); // id应在引号内