0

是否可以像restrictToOwner在另一个钩子中一样使用钩子?例如,我希望用户一般只能更新他们自己的信息,但我也希望他们能够访问其他用户的特定属性。因此,如果存在特定的查询参数,比如说关于用户的评论,我希望用户通过,否则我想使用restrictToOwner钩子。当然,我可以编写自己的等效restrictToOwner钩子,但如果可能的话,我想利用已经存在的钩子(?)。下面的代码不起作用,但我想要类似的东西:

module.exports = function(options) {
  return function(hook) {
    if (typeof hook.data.comment !== 'undefined')
      return hook;
    return auth.restrictToOwner({ ownerField: '_id' });
  };
};

我想做的另一件事是仅当请求是外部调用时才执行挂钩。我的内部脚本应该可以无限制访问。就像是:

// user/hooks/index.js
exports.before = {
  patch: [
    globalHooks.ifExternal(auth.restrictToOwner({ ownerField: '_id' }))
  ]
};
// hooks/index.js
exports.ifExternal = function(func) {
  return function(hook) {
    if (typeof hook.params.provider === 'undefined') //? if internal
      return hook;
    return func;
  };
};

提前致谢!

4

1 回答 1

1

auth.restrictToOwner是一个返回另一个使用钩子对象的函数的函数。

所以你需要这样称呼它:

return auth.restrictToOwner({ ownerField: '_id' })(hook);

对于你的第二个问题:

if (!hook.params.provider) {
  // internal only stuff here.
}
于 2016-10-18T11:12:12.117 回答