> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Découvrez comment utiliser le Memberships Query Hook avec la Delegated Administration Extension.

# Delegated Administration : Memberships Query Hook

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

<div id="hook-contract">
  ## Contrat du Hook
</div>

* **ctx** : Objet de contexte.
* **callback(error, \{ createMemberships: true/false, memberships: })** : Callback dans lequel vous pouvez retourner une erreur et un objet contenant la configuration des appartenances.

<div id="sample-use">
  ## Exemple d’utilisation
</div>

Les utilisateurs du département informatique devraient pouvoir créer des utilisateurs dans d’autres départements. Les utilisateurs des autres départements devraient seulement pouvoir créer des utilisateurs pour leur propre département.

```javascript lines theme={null}
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 ]);
}
```

<div id="notes">
  ## Remarques
</div>

Comme vous ne pouvez utiliser cette query que dans l’UI, vous devrez attribuer les appartenances à l’aide du **Write Hook** si vous devez faire respecter des règles concernant l’attribution des utilisateurs à des départements précis.

S’il n’existe qu’un seul groupe d’appartenance possible, le champ Appartenances ne s’affichera pas dans l’UI.

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

```javascript lines theme={null}
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 ]
  });
}
```

<div id="learn-more">
  ## Pour en savoir plus
</div>

* [Delegated Administration : Access Hook](/docs/fr-ca/customize/extensions/delegated-administration-extension/delegated-administration-hooks/delegated-administration-access-hook)
* [Delegated Administration : Filter Hook](/docs/fr-ca/customize/extensions/delegated-administration-extension/delegated-administration-hooks/delegated-administration-filter-hook)
* [Delegated Administration : Settings Query Hook](/docs/fr-ca/customize/extensions/delegated-administration-extension/delegated-administration-hooks/delegated-administration-settings-query-hook)
* [Delegated Administration : Write Hook](/docs/fr-ca/customize/extensions/delegated-administration-extension/delegated-administration-hooks/delegated-administration-write-hook)
