メインコンテンツへスキップ
Delegated Admin - Administrator ロールが割り当てられているユーザーは、委任管理拡張機能の動作をカスタマイズできるさまざまな拡張フックとクエリを管理できます。 構成領域にアクセスするには:
  1. Delegated Administration Dashboardにログインします。
  2. 右上隅にある自分の名前をクリックします。ドロップダウンメニューが表示されるので、 [Configure(構成)] オプションをクリックします。
リダイレクトされる [Configuration(構成)] ページでは、フックとクエリを管理できます。

拡張機能フックのコンテキスト

context (ctx )オブジェクトは、現在の要求に関するいくつかのヘルパーと情報を公開します。すべての拡張機能フックで次のメソッドとプロパティを使用できます:
  • ロギング
  • キャッシュ
  • Custom Data(カスタムデータ)
  • ペイロードと要求
  • リモート呼び出し

ロギング

Webtaskログ(リアルタイムWebtaskログ拡張機能を使用して表示できます)にメッセージを追加するには、 log メソッドを呼び出します。
function(ctx, callback) {
  ctx.log('Logging action:', ctx.payload.action);
  return callback();
}
リアルタイムWebtaskログ拡張機能の詳細については、[Realtime Webtask Logs(リアルタイムWebtaskログ)]をお読みください。

キャッシュ

何か(部署の長いリストなど)をキャッシュするには、コンテキストの グローバル オブジェクトに保存します。このオブジェクトは、Webtaskコンテナがリサイクルされるまで使用できます。
function(ctx, callback) {
  ctx.global.departments = [ 'IT', 'HR', 'Finance' ];
  return callback();
}

Custom Data(カスタムデータ)

拡張機能内にカスタムデータを保存できます。このフィールドは、400kbのデータに制限されています。
var data = {
departments: [ 'IT', 'HR', 'Finance' ]
};

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

ペイロードと要求

各拡張フックは、現在のペイロードまたは要求を特定の情報と共に公開します。要求には、ユーザーダッシュボードにログインしているユーザーに関する情報が常に含まれます。
function(ctx, callback) {
  ctx.log('Current User:', ctx.request.user);
  return callback();
}

リモート呼び出し

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

        // ...
    });
}

フックコントラクト

  • ctx:コンテキストオブジェクト
    • payload:ペイロードオブジェクト
      • Actions:現在実行されているアクション(例: delete:user
      • Users:アクションが実行されているユーザー
  • callback(エラー):アクセスが拒否された場合にエラーを返すことができるコールバック

使用例

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

  // 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 access all users.
  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

使用可能な拡張フック

Delegated Administration Applicationでは、次の拡張フックを使用できます。

もっと詳しく

I