> ## 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 l’Access Hook avec la Delegated Administration Extension.

# Delegated Administration: Access Hook

Comme le Filter Hook applique uniquement une logique de filtrage, vous aurez besoin d’un deuxième niveau de logique pour déterminer si l’utilisateur actuel (ou la personne agissant à titre d’administrateur) est autorisé à accéder à un utilisateur précis.

Pour en savoir plus sur le Filter Hook, consultez [Delegated Administration: Filter Hook](/docs/fr-ca/customize/extensions/delegated-administration-extension/delegated-administration-hooks/delegated-administration-filter-hook).

L’**Access Hook** vous permet de déterminer si l’utilisateur actuel est autorisé à lire, supprimer, bloquer, débloquer ou mettre à jour un utilisateur précis.

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

* **ctx** : Objet de contexte.

  * **payload** : Objet payload.

    * **action** : Action actuelle (p. ex., **delete:user**) en cours d’exécution.
    * **user** : Utilisateur sur lequel l’action s’exécute.
* **callback(error)** : Fonction de rappel à laquelle vous pouvez renvoyer une erreur si l’accès est refusé.

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

Kelly gère le département des finances, et elle ne devrait avoir accès 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.'));
  }

  // Récupérer le département à partir des métadonnées de l'utilisateur actuel.
  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.'));
  }

  // Le département TI peut accéder à tous les utilisateurs.
  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();
}
```

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

Si ce hook n’est pas configuré, l’utilisateur actuel aura accès à tous les utilisateurs.

Le Hook prend en charge les noms d’action suivants (à définir comme valeur de **ctx.payload.action**) :

* 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="learn-more">
  ## En savoir plus
</div>

* [Delegated Administration: Filter Hook](/docs/fr-ca/customize/extensions/delegated-administration-extension/delegated-administration-hooks/delegated-administration-filter-hook)
* [Delegated Administration: Memberships Query Hook](/docs/fr-ca/customize/extensions/delegated-administration-extension/delegated-administration-hooks/delegated-administration-memberships-query-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)
