查找没有权限的文档

时间:2017-07-24 00:43:35

标签: apostrophe-cms

我正在为我的Apostrophe CMS安装上的用户添加密码重置功能。我使用此代码通过电子邮件地址查找用户并创建新令牌供以后使用:(在lib / modules / apostrophe-users / index.js中)

module.exports = {
    construct: function(self, options) {
        self.route('post', 'send-reset-token', function (req, res) {
            var email = req.body.email;
            var usersModule = self.apos.modules['apostrophe-users'];
            var userList = usersMods.find(req, {email: email}, {permissions: false});
            userList.toArray(function (err, arr) {
                if (arr.length > 0) {
                    //Create token
                }
            });
        }
    }
}

但是,当此请求来自未登录的会话(这是重置点)时,用户列表为空。我认为(从阅读文档)将options.permissions参数设置为false,它将使用户不​​首先检查权限,但它似乎没有工作。当我以管理员身份登录时,我可以正确地获得用户。

在没有请求者有权查看用户的情况下,我是否需要在服务器端找到此用户?

1 个答案:

答案 0 :(得分:2)

find的第二个参数是MongoDB标准对象。 permissions不是集合中任何对象的属性,因此您什么都不回来。

permission是单数,它是一个游标过滤器方法,而不是选项对象的属性。我们不使用find的选项对象,因为可链接的过滤方法更灵活,可记录且可测试。

您正在寻找的是:

return usersModule.find(req, {email: email}).permission(false).toObject(function(err, user) {
  if (user) {
    // There was a user
  }
})

请注意permission在这里是单数。

唯一可以找到这个被描述为选项对象一部分的地方是旧版本0.5的文档。 0.5的官方文档在顶部有一个很大的警告。如果您在没有警告的情况下在页面上找到此信息,请告诉我,我可以努力解决此问题。