Administration déléguée : Hook de requête des adhésions

Lors de la création d’un nouvel utilisateur, l’interface utilisateur affiche un menu déroulant où vous pouvez choisir le ou les adhésions que vous souhaitez attribuer à l’utilisateur. Ces adhésions sont ensuite définies à l’aide du Membership Query Hook (Appel de requête des adhésions).

Contrat Hook

  • ctx : Objet contextuel.

  • callback(error, { createMemberships: true/false, memberships: }) : Rappel auquel vous pouvez renvoyer une erreur et un objet contenant la configuration des adhésions.

Exemple d’utilisation

Les utilisateurs du service informatique doivent pouvoir créer des utilisateurs dans d’autres services. Les utilisateurs des autres services ne doivent pouvoir créer des utilisateurs que pour leur propre service.

function(ctx, callback) {
  var currentDepartment = ctx.payload.user.app_metadata && ctx.payload.user.app_metadata.department;
  if (!currentDepartment || !currentDepartment.length) {
    return callback(null, [ ]);
  }

  if (currentDepartment === 'IT') {
    return callback(null, [ 'IT', 'HR', 'Finance', 'Marketing' ]);
  }

  return callback(null, [ ctx.payload.user.app_metadata.department ]);
}

Was this helpful?

/

Remarques

Étant donné que vous ne pouvez utiliser cette requête que dans l’interface utilisateur (IU), vous devrez attribuer les adhésions à l’aide de Write Hook (Appel d’écriture) si vous devez appliquer des règles concernant l’attribution des utilisateurs à des services spécifiques.

S’il n’existe qu’un seul groupe d’adhésion possible, le champ Adhésions ne s’affichera pas dans l’interface utilisateur (IU).

Vous pouvez permettre à l’utilisateur final de saisir n’importe quelle valeur dans le champ memberships (adhésions) en définissant createMemberships sur true :

function(ctx, callback) {
  var currentDepartment = ctx.payload.user.app_metadata.department;
  if (!currentDepartment || !currentDepartment.length) {
    return callback(null, [ ]);
  }

  return callback(null, {
    createMemberships: ctx.payload.user.app_metadata.department === 'IT' ? true : false,
    memberships: [ ctx.payload.user.app_metadata.department ]
  });
}

Was this helpful?

/

En savoir plus