> ## Documentation Index
> Fetch the complete documentation index at: https://docs-dev-fix-docs-5528-php-updates.mintlify.site/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.

## Contexte des hooks d’extension

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

### Journalisation

Pour ajouter un message aux Journaux d'actions en temps réel (que vous pouvez consulter en utilisant Journaux d'actions en temps réel), 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/customize/extensions/real-time-webtask-logs).

### Mettre en cache

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();
}
```

### Données personnalisées

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) {
    // ...
});
```

### Charge utile et demande

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();
}
```

### Appels distants

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);
        }

        // ...
    });
}
```

### Contrat Hook

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

### Exemples de cas d’utilisation

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`

## Hooks d’extension disponibles

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

* [Hook d’accès](/docs/fr-ca/customize/extensions/delegated-administration-extension/delegated-administration-hooks/delegated-administration-access-hook)
* [Hook de filtre](/docs/fr-ca/customize/extensions/delegated-administration-extension/delegated-administration-hooks/delegated-administration-filter-hook)
* [Hook de requête des adhésions](/docs/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/customize/extensions/delegated-administration-extension/delegated-administration-hooks/delegated-administration-settings-query-hook)
* [Hook d’écriture](/docs/fr-ca/customize/extensions/delegated-administration-extension/delegated-administration-hooks/delegated-administration-write-hook)

## En savoir plus

* [Administration déléguée : Hook d’accès](/docs/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/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/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/customize/extensions/delegated-administration-extension/delegated-administration-hooks/delegated-administration-settings-query-hook)
* [Administration déléguée : Write Hook](/docs/fr-ca/customize/extensions/delegated-administration-extension/delegated-administration-hooks/delegated-administration-write-hook)
