Passer au contenu principal
Lors de la création d’un nouvel utilisateur, l’interface utilisateur affiche une liste déroulante dans laquelle vous pouvez sélectionner la ou les appartenances à attribuer à un utilisateur. Ces appartenances sont ensuite définies à l’aide du Memberships Query Hook.

Contrat du hook

  • ctx: Objet de contexte.
  • callback(error, { createMemberships: true/false, memberships: }): Fonction de rappel par laquelle vous pouvez renvoyer une erreur ainsi qu’un objet contenant la configuration des appartenances.

Exemple d’utilisation

Les utilisateurs du service informatique devraient pouvoir créer des utilisateurs dans d’autres services. Les utilisateurs des autres services ne devraient 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 ]);
}

Remarques

Comme cette requête ne peut être utilisée que dans l’interface utilisateur, vous devrez attribuer les appartenances à l’aide du Write Hook si vous devez appliquer des règles pour l’affectation des utilisateurs à des services précis. S’il n’existe qu’un seul groupe d’appartenance possible, le champ Appartenance ne s’affichera pas dans l’interface utilisateur. Vous pouvez autoriser l’utilisateur final à saisir n’importe quelle valeur dans le champ appartenance en définissant createMemberships à 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 ]
  });
}

En savoir plus