是否可以在另一个钩子中使用像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;
};
};
提前致谢!
答案 0 :(得分:1)
auth.restrictToOwner
是一个函数,它返回另一个使用钩子对象的函数。
所以你需要这样称呼它:
return auth.restrictToOwner({ ownerField: '_id' })(hook);
关于你的第二个问题:
if (!hook.params.provider) {
// internal only stuff here.
}