> ## 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.

> Apprenez à utiliser le Custom Domain Hook avec la Delegated Administration Extension.

# Delegated Administration : Custom Domain Hook

Lorsque vous utilisez [Multiple Custom Domains](/docs/fr-ca/customize/custom-domains/multiple-custom-domains) avec la Delegated Administration Extension, le **Custom Domain Hook** vous permet de préciser quel domaine personnalisé doit être utilisé pour des opérations sur les utilisateurs comme la création d’utilisateurs, la réinitialisation de mots de passe, la vérification des courriels et le blocage d’utilisateurs.

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

* **ctx** : Objet de contexte contenant des renseignements sur la requête en cours.
  * **method** : L’opération effectuée (p. ex., `create`, `reset_password`, `verify_email`, `block_user`).
  * **payload** : Données liées à l’opération (pour la méthode `create`, contient des renseignements sur l’utilisateur, comme l’adresse courriel).
  * **request** : Contient des renseignements sur la requête.
    * **originalUser** : L’utilisateur visé par l’opération (pour les méthodes autres que `create`).
* **callback(error, result)** : Fonction de rappel servant à renvoyer la configuration du domaine personnalisé.
  * **error** : Objet d’erreur si un problème s’est produit, sinon `null`.
  * **result** : Objet qui définit le comportement du domaine personnalisé :
    * **customDomain** (chaîne) : Le domaine personnalisé à utiliser (p. ex., `'customone.example.com'`).
    * **useCanonicalDomain** (booléen) : Définissez cette valeur à `true` pour utiliser le domaine canonique du tenant au lieu d’un domaine personnalisé.
    * Retournez un objet vide `{}` pour déléguer au [domaine par défaut](/docs/fr-ca/customize/custom-domains/multiple-custom-domains) du tenant.

<div id="supported-methods">
  ## Méthodes prises en charge
</div>

Le Custom Domain Hook est invoqué pour les opérations utilisateur suivantes :

* **create** : lors de la création d’un nouvel utilisateur
* **reset\_password** : lors de l’envoi d’un courriel de réinitialisation du mot de passe
* **verify\_email** : lors de l’envoi d’un lien de vérification par courriel
* **block\_user** : lors du blocage d’un utilisateur

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

Dans cet exemple, les utilisateurs ayant différents domaines de courriel sont acheminés vers différents domaines personnalisés. Les utilisateurs ayant un domaine d’entreprise utilisent le domaine canonique du tenant, tandis que tous les autres utilisent le domaine par défaut du tenant.

```javascript lines theme={null}
function(ctx, callback) {
  // Mapper les domaines de courriel aux domaines personnalisés
  const emailToDomain = {
    'customone.com': 'customone.example.com',
    'customtwo.com': 'customtwo.example.com',
  };

  // Fonction utilitaire pour extraire le domaine personnalisé à partir du courriel
  function getDomainFromEmail(userEmail) {
    if (!userEmail) return null;
    const domain = userEmail.split('@')[1];
    return emailToDomain[domain];
  }

  // Fonction utilitaire pour déterminer si le domaine canonique doit être utilisé
  function shouldUseCanonical(userEmail) {
    if (!userEmail) return false;
    const domain = userEmail.split('@')[1];
    return domain === 'corp.com';
  }

  // Récupérer le courriel de l'utilisateur selon l'opération
  let userEmail;
  if (ctx.method === 'create') {
    // Pour les opérations de création, le courriel se trouve dans le payload
    userEmail = ctx.payload.email;
  } else {
    // Pour les autres opérations, récupérer le courriel de l'utilisateur d'origine
    userEmail = ctx.request.originalUser.email;
  }

  const customDomain = getDomainFromEmail(userEmail);

  // Option 1 : Utiliser un domaine personnalisé spécifique
  if (customDomain) {
    return callback(null, {
      customDomain: customDomain
    });
  }

  // Option 2 : Utiliser le domaine canonique du tenant
  if (shouldUseCanonical(userEmail)) {
    return callback(null, {
      useCanonicalDomain: true
    });
  }

  // Option 3 : Utiliser le domaine par défaut du tenant (si configuré)
  // Retourner un objet vide pour déléguer au domaine par défaut
  return callback(null, {});
}
```

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

* Si ce hook n’est pas configuré, la Delegated Administration Extension utilisera le domaine personnalisé par défaut du tenant s’il est configuré; sinon, elle utilisera le domaine canonique.
* Le domaine personnalisé renvoyé doit être un domaine personnalisé vérifié configuré dans votre tenant. Si vous indiquez un domaine invalide ou non vérifié, l’opération échouera.
* Si vous utilisez `useCanonicalDomain: true`, les courriels et les liens utiliseront le domaine canonique de votre tenant Auth0 (par ex., `YOUR_TENANT.auth0.com` ou `YOUR_TENANT.REGION.auth0.com`).
* Le renvoi d’un objet vide `{}` délègue la sélection du domaine à la configuration du [domaine personnalisé par défaut](/docs/fr-ca/customize/custom-domains/multiple-custom-domains) du tenant.

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

* [Multiple Custom Domains](/docs/fr-ca/customize/custom-domains/multiple-custom-domains)
* [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: Write Hook](/docs/fr-ca/customize/extensions/delegated-administration-extension/delegated-administration-hooks/delegated-administration-write-hook)
* [Delegated Administration: Settings Query Hook](/docs/fr-ca/customize/extensions/delegated-administration-extension/delegated-administration-hooks/delegated-administration-settings-query-hook)
