2017-03-07 8 views
1

私はドキュメントを読んできましたが、私はそれを正しく理解することはできません。FeathersJSで条件付きフックを構成する方法は?

私はいくつかの付属のフックをラップしてカスタム条件付きフックを実装しようとしています。

auth.restrictToRoles({ 
    roles: ['admin', 'super-admin'] 
}), 

ユーザーが必要な役割を持っている場合:ユーザーが使用してadminまたはsuper-admin役割を持っている場合、最初のチェック)

1:それはで(メソッドは関係ありません)サービスへのアクセスを制限すべきです、フックはアクセスを許可する必要があります。そうでなければ...

2)を使用して、所有者へのアクセスを制限:私は把握することはできませんどのような

auth.restrictToOwner({ ownerField: 'id' }), 

は、必要に応じて私はauth.restrictToOwnerを実行することができますauth.restrictToRolesの結果を取得して確認する方法です。

ご協力いただければ幸いです!

答えて

2

2つのオプションがあります。簡単にすると、あらかじめ作成されたフックを使用しないことです。ほぼすべてのあらかじめ構築されたフックは、ほんの数行のコードで自分で実装することができます。それは次のようになります。

app.service('myservice').before({ 
    find(hook) { 
    const { user } = hook.params; 
    const {roles } = user; 

    if(roles.indexOf('admin') !== -1 && roles.indexOf('super-admin') !== -1) { 
     hook.params.query.userId = user._id; 
    } 
    } 
}); 

を他の方法は、最初のエラー(それは基本的に自分でそれを完全に実装するよりもコードであることに注意してください)restrictToRolesを呼び出し、catchesラッパーフックを作成することです:

const restrictToRoles = auth.restrictToRoles({ 
    roles: ['admin', 'super-admin'] 
}); 
const restrictToOwner = auth.restrictToOwner({ ownerField: 'id' }); 

app.service('myservice').before({ 
    find(hook) { 
    return restrictToRoles(hook).catch(() => restrictToOwner(hook)); 
    } 
}); 
+0

大変ありがとうございます。私は2つの種類の組み合わせと、そのうまくいって行ってしまった。 – forgot

関連する問題