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

# Administration déléguée : Hooks d’extension

> Apprenez à personnaliser le comportement de l’extension Delegated Administration en utilisant des hooks d’extension.

Si vous êtes un utilisateur assigné au rôle **Administrateur délégué - Administrateur** vous pouvez gérer les différents hooks d’extension et requêtes qui vous permettent de personnaliser le comportement de l’extension Delegated Administration.

Pour accéder à la zone de configuration :

1. Connectez-vous au tableau de bord de Delegated Administration.
2. Cliquez sur votre nom dans le coin supérieur droit. Vous verrez un menu déroulant; cliquez sur l’option **Configurer** .

La page de **Configuration** vers laquelle vous êtes redirigé est l’endroit où vous pouvez gérer vos hooks et requêtes.

<div id="extension-hooks-context">
  ## Contexte des hooks d’extension
</div>

L’objet de contexte (**ctx**) exposera quelques auxiliaires et des informations sur la requête actuelle. Les méthodes et propriétés suivantes sont disponibles dans chaque hook d’extension :

* Journalisation
* Mettre en cache
* Données personnalisées
* Charge utile et demande
* Appels distants

<div id="logging">
  ### Journalisation
</div>

Pour ajouter un message aux journaux Webtask (que vous pouvez consulter en utilisant l’extension Realtime Webtask Logs), faites appel à la méthode **log** :

```javascript lines theme={null}
function(ctx, callback) {
  ctx.log('Logging action:', ctx.payload.action);
  return callback();
}
```

Pour en savoir plus sur l’extension Realtime Webtask Log, lisez [Journaux Realtime Webtask](/docs/fr-CA/fr-ca/customize/extensions/real-time-webtask-logs).

<div id="caching">
  ### Mettre en cache
</div>

Pour mettre en cache quelque chose (comme une longue liste de départements), vous pouvez la stocker dans l’objet **global** du contexte Cet objet sera disponible jusqu’à ce que le conteneur Webtask soit recyclé.

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

<div id="custom-data">
  ### Données personnalisées
</div>

Vous pouvez stocker des données personnalisées dans l’extension. Ce champ est limité à 400 Ko de données.

```javascript lines theme={null}
var data = {
departments: [ 'IT', 'HR', 'Finance' ]
};

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

Pour lire les données :

```javascript lines theme={null}
ctx.read()
.then(function(data) {
    // ...
})
.catch(function(err) {
    // ...
});
```

<div id="payload-and-request">
  ### Charge utile et demande
</div>

Chaque hook d’extension expose la charge utile ou la demande en cours avec des informations spécifiques. La demande contiendra toujours des informations sur l’utilisateur connecté au Dashboard des utilisateurs :

```javascript lines theme={null}
function(ctx, callback) {
  ctx.log('Current User:', ctx.request.user);
  return callback();
}
```

<div id="remote-calls">
  ### Appels distants
</div>

Si vous souhaitez appeler un service externe (tel qu’une API) pour valider des données ou charger des adhésions, vous pouvez le faire en utilisant le module `request`

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

        // ...
    });
}
```

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

* `ctx` : L’objet du contexte

  * `payload` : L’objet de la charge utile

    * `action` : L’action en cours d’exécution (par exemple, `delete:user`)
    * `user` : L’utilisateur sur lequel l’action est exécutée
* `callback(error)`: Le rappel auquel vous pouvez renvoyer une erreur si l’accès est refusé

<div id="sample-use">
  ### Exemples de cas d’utilisation
</div>

Kelly gère le département des Finances, et elle ne devrait pouvoir accéder qu’aux utilisateurs de son département.

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

Si ce hook n’est pas configuré, tous les utilisateurs seront accessibles.

Noms d’actions pris en charge :

* `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`

<div id="available-extension-hooks">
  ## Hooks d’extension disponibles
</div>

Les hooks d’extension suivants sont disponibles pour une utilisation avec l’application Delegated Administration :

* [Hook d’accès](/docs/fr-CA/fr-ca/customize/extensions/delegated-administration-extension/delegated-administration-hooks/delegated-administration-access-hook)
* [Hook de filtre](/docs/fr-CA/fr-ca/customize/extensions/delegated-administration-extension/delegated-administration-hooks/delegated-administration-filter-hook)
* [Hook de requête des adhésions](/docs/fr-CA/fr-ca/customize/extensions/delegated-administration-extension/delegated-administration-hooks/delegated-administration-memberships-query-hook)
* [Hook de requête de paramètres](/docs/fr-CA/fr-ca/customize/extensions/delegated-administration-extension/delegated-administration-hooks/delegated-administration-settings-query-hook)
* [Hook d’écriture](/docs/fr-CA/fr-ca/customize/extensions/delegated-administration-extension/delegated-administration-hooks/delegated-administration-write-hook)

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

* [Administration déléguée : Hook d’accès](/docs/fr-CA/fr-ca/customize/extensions/delegated-administration-extension/delegated-administration-hooks/delegated-administration-access-hook)
* [Administration déléguée : Hook de filtrage](/docs/fr-CA/fr-ca/customize/extensions/delegated-administration-extension/delegated-administration-hooks/delegated-administration-filter-hook)
* [Administration déléguée : Hook de requête des adhésions](/docs/fr-CA/fr-ca/customize/extensions/delegated-administration-extension/delegated-administration-hooks/delegated-administration-memberships-query-hook)
* [Administration déléguée : Requête de paramètres du hook](/docs/fr-CA/fr-ca/customize/extensions/delegated-administration-extension/delegated-administration-hooks/delegated-administration-settings-query-hook)
* [Administration déléguée : Write Hook](/docs/fr-CA/fr-ca/customize/extensions/delegated-administration-extension/delegated-administration-hooks/delegated-administration-write-hook)
