2016-10-18 11 views
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; 
    }; 
}; 

ありがとうございます!

答えて

1

auth.restrictToOwnerは、フックオブジェクトを消費する別の関数を返す関数です。

だから、あなたはこのようにそれを呼び出す必要があります:あなたの2番目の質問に

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

:今、私は両方に乗る

if (!hook.params.provider) { 
    // internal only stuff here. 
} 
+0

は、未処理の約束拒否 'エラーをフックします。プロパティを読み取ることができません「を取得」定義されていない。デバッグは、エラーがどこで発生しているかを見つけるのに役立たなかった。 'feathers-socket-commons:methodsユーザーの呼び出しエラー:: patch + 18ms {[TypeError:未定義のプロパティ 'get'を読み取ることができません]'あなたはアイデアがありますか? – tan