委任管理:フィルターフック

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などの複数の演算子を使用する場合は、それらの検索パラメーターを括弧[()]で囲み、どの演算子がどこで有効かを明確にしてください。

このフックを構成しないと、検索結果にすべてのユーザーが返されます。

もっと詳しく