Passer au contenu principal
Si le rôle Delegated Admin - Administrator vous a été attribué, 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 section de configuration :
  1. Connectez-vous au tableau de bord de Delegated Administration.
  2. Cliquez sur votre nom dans le coin supérieur droit. Un menu déroulant s’affiche ; cliquez sur l’option Configure.
La page Configuration vers laquelle vous êtes redirigé vous permet de gérer vos hooks et vos requêtes.

Contexte des hooks d’extension

L’objet de contexte (ctx) expose quelques fonctions utilitaires et des renseignements sur la requête en cours. Les méthodes et propriétés suivantes sont disponibles dans chaque hook d’extension :
  • Journalisation
  • Mise en cache
  • Données personnalisées
  • Payload et requête
  • Appels distants

Journalisation

Pour ajouter un message aux logs en temps réel d’Actions (que vous pouvez consulter avec Actions Real-time Logs), appelez la méthode log :
function(ctx, callback) {
  ctx.log('Logging action:', ctx.payload.action);
  return callback();
}

Mise en cache

Pour mettre des données en cache (comme une longue liste de départements), vous pouvez les stocker dans l’objet global du contexte. Cet objet sera disponible jusqu’au recyclage du conteneur Actions Real-Time Logs.
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.
var data = {
departments: [ 'IT', 'HR', 'Finance' ]
};

ctx.write(data)
.then(function() {
    // ...
})
.catch(function(err) {
    // ...
});
Pour lire les données :
ctx.read()
.then(function(data) {
    // ...
})
.catch(function(err) {
    // ...
});

Payload et requête

Chaque hook d’extension expose le payload ou la requête en cours avec des informations précises. La requête contient toujours des informations sur l’utilisateur connecté à la section Utilisateurs du Auth0 Dashboard :
function(ctx, callback) {
  ctx.log('Current User:', ctx.request.user);
  return callback();
}

Appels distants

Si vous souhaitez appeler un service externe (comme une API) pour valider des données ou charger des appartenances, vous pouvez le faire à l’aide du module request.
function(ctx, callback) {
var request = require('request');
    request('http://api.mycompany.com/departments', function (error, response, body) {
        if (error) {
        return callback(error);
        }

        // ...
    });
}

Contrat du hook

  • ctx : l’objet de contexte
    • payload : l’objet payload
      • 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 callback auquel vous pouvez renvoyer une erreur si l’accès est refusé

Exemple d’utilisation

Kelly gère le service des finances et ne devrait pouvoir accéder qu’aux utilisateurs de son service.
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();
}
Si ce hook n’est pas configuré, il sera possible d’accéder à tous les utilisateurs. 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 utilisation avec l’application Delegated Administration :

Pour en savoir plus