メインコンテンツへスキップ
Delegated Admin - Administrator ロールが割り当てられているユーザーは、Delegated Administration extension の動作をカスタマイズするための各種 Extension Hooks とクエリを管理できます。 設定画面にアクセスするには、次の手順に従います。
  1. Delegated Administration Dashboard にログインします。
  2. 右上隅にある自分の名前をクリックします。ドロップダウンメニューが表示されたら、Configure オプションをクリックします。
リダイレクト先の Configuration ページで、Hooks とクエリを管理できます。

Extension Hooks コンテキスト

コンテキスト (ctx) オブジェクトでは、現在のリクエストに関する各種ヘルパーと情報を利用できます。以下のメソッドとプロパティは、すべての Extension Hook で使用できます。
  • ロギング
  • キャッシュ
  • カスタムデータ
  • ペイロードとリクエスト
  • リモート呼び出し

ログ

Actions Real-time Logs (Actions Real-time Logs で確認できます) にメッセージを追加するには、log メソッドを呼び出します。
function(ctx, callback) {
  ctx.log('Logging action:', ctx.payload.action);
  return callback();
}

キャッシュ

長い部署一覧のようなデータをキャッシュするには、context の global オブジェクトに保存できます。このオブジェクトは、Actions Real-Time Logs コンテナが再作成されるまで利用できます。
function(ctx, callback) {
  ctx.global.departments = [ 'IT', 'HR', 'Finance' ];
  return callback();
}

カスタムデータ

拡張機能内にカスタムデータを保存できます。このフィールドに保存できるデータは最大 400 KB です。
var data = {
departments: [ 'IT', 'HR', 'Finance' ]
};

ctx.write(data)
.then(function() {
    // ...
})
.catch(function(err) {
    // ...
});
データを読み出すには:
ctx.read()
.then(function(data) {
    // ...
})
.catch(function(err) {
    // ...
});

ペイロードとリクエスト

各 Extension Hook は、現在のペイロードまたはリクエストを、それぞれ固有の情報とともに公開します。リクエストには常に、Users Dashboard にログインしているユーザーに関する情報が含まれます。
function(ctx, callback) {
  ctx.log('Current User:', ctx.request.user);
  return callback();
}

リモート呼び出し

データを検証したりメンバーシップを読み込んだりするために外部サービス (API など) を呼び出す場合は、request モジュールを使用できます。
function(ctx, callback) {
var request = require('request');
    request('http://api.mycompany.com/departments', function (error, response, body) {
        if (error) {
        return callback(error);
        }

        // ...
    });
}

Hook の仕様

  • ctx: コンテキストオブジェクト
    • payload: ペイロードオブジェクト
      • action: 現在実行中のアクション (例: delete:user)
      • user: アクションの実行対象となるユーザー
  • callback(error): アクセスが拒否された場合にエラーを返せるコールバック

使用例

Kelly は財務部門を管理しており、自身の部門内のユーザーにのみアクセスできる必要があります。
function(ctx, callback) {
  if (ctx.payload.action === 'delete:user') {
    return callback(new Error('You are not allowed to delete users.'));
  }

  // 現在のユーザーのメタデータから部署を取得します。
  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.'));
  }

  // IT部門はすべてのユーザーにアクセスできます。
  if (department === 'IT') {
    return callback();
  }

  ctx.log('Verifying access:', ctx.payload.user.app_metadata.department, department);

  if (!ctx.payload.user.app_metadata.department || ctx.payload.user.app_metadata.department !== department) {
    return callback(new Error('You can only access users within your own department.'));
  }

  return callback();
}
このフックが設定されていない場合は、すべてのユーザーにアクセスできます。 サポート対象のアクション名:
  • read:user
  • delete:user
  • reset:password
  • change:password
  • change:username
  • change:email
  • read:devices
  • read:logs
  • remove:multifactor-provider
  • block:user
  • unblock:user
  • send:verification-email

利用可能な Extension Hooks

Delegated Administration Application で使用できる Extension Hooks は次のとおりです。

詳細情報