委任管理:フィルターフック
Delegated Admin - Userロールのユーザーはデフォルトで、そのAuth0アカウントに紐づけられたすべてのユーザーを表示できます。しかし、フィルターフックを使うと、ユーザーに表示されるデータをフィルタリングすることができます。
フックコントラクト
ctx:コンテキストオブジェクト。
callback(error, query):ユーザーをフィルタリングするときに使用する、エラーまたはluceneクエリを返すことができるコールバック。この拡張機能はこのクエリをManagement APIのユーザー取得エンドポイントに送信します。
luceneクエリについて詳しくは、「ユーザー検索クエリ構文」を参照してください。
サンプルユースケース
財務部門を管理するKellyには、財務部門に所属するユーザーしか表示されるべきではありません。そこで、該当するユーザーと部門(この場合は、財務部門とKelly)に応じて全体のユーザーにフィルターをかけます。
function(ctx, callback) {
// Get the department from the current user's metadata.
var department = ctx.request.user.app_metadata && ctx.request.user.app_metadata.department;
if (!department || !department.length) {
return callback(new Error('The current user is not part of any department.'));
}
// The IT department can see all users.
if (department === 'IT') {
return callback();
}
// Return the lucene query.
return callback(null, 'app_metadata.department:"' + department + '"');
}
Was this helpful?
/
検索エンジンのオーバーライド
デフォルトの検索エンジンは、応答で選択を指定することでオーバーライドできます。
// Return the lucene query.
return callback(null, { query: 'app_metadata.department:"' + department + '"', searchEngine: 'v2' });
Was this helpful?
/
注記
フィルタイリングする際には一重引用符、二重引用符、その他の特殊文字(+や-など)は使用しないでください。使用するとLuceneクエリに問題が生じる可能性があります。
OR、NOT、ANDなどの複数の演算子を使用する場合は、それらの検索パラメーターを括弧[()
]で囲み、どの演算子がどこで有効かを明確にしてください。
このフックを構成しないと、検索結果にすべてのユーザーが返されます。