Delegated Administration:拡張フック

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();
}

Was this helpful?

/

リアルタイムWebtaskログ拡張機能の詳細については、[Realtime Webtask Logs(リアルタイムWebtaskログ)]をお読みください。

キャッシュ

何か(部署の長いリストなど)をキャッシュするには、コンテキストのグローバルオブジェクトに保存します。このオブジェクトは、Webtaskコンテナがリサイクルされるまで使用できます。

function(ctx, callback) {
  ctx.global.departments = [ 'IT', 'HR', 'Finance' ];
  return callback();
}

Was this helpful?

/

Custom Data(カスタムデータ)

拡張機能内にカスタムデータを保存できます。このフィールドは、400kbのデータに制限されています。

var data = {
departments: [ 'IT', 'HR', 'Finance' ]
};

ctx.write(data)
.then(function() {
    // ...
})
.catch(function(err) {
    // ...
});

Was this helpful?

/

データを読み取るには:

ctx.read()
.then(function(data) {
    // ...
})
.catch(function(err) {
    // ...
});

Was this helpful?

/

ペイロードと要求

各拡張フックは、現在のペイロードまたは要求を特定の情報と共に公開します。要求には、ユーザーダッシュボードにログインしているユーザーに関する情報が常に含まれます。

function(ctx, callback) {
  ctx.log('Current User:', ctx.request.user);
  return callback();
}

Was this helpful?

/

リモート呼び出し

データを検証したり、メンバーシップを読み込んだりするために外部サービス (APIなど) を呼び出す場合は、要求モジュールを使用してこれを行うことができます。

function(ctx, callback) {
var request = require('request');
    request('http://api.mycompany.com/departments', function (error, response, body) {
        if (error) {
        return callback(error);
        }

        // ...
    });
}

Was this helpful?

/

フックコントラクト

  • 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();
}

Was this helpful?

/

このフックが構成されていない場合は、すべてのユーザーにアクセスできます。

サポートされているアクション名:

  • 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では、次の拡張フックを使用できます。

もっと詳しく