Découvrez comment utiliser le Write Hook avec l’extension Delegated Administration.
Le Write Hook, qui s’exécute chaque fois que vous créez ou mettez à jour un utilisateur, vous permet notamment de :
Modifier le mot de passe de l’utilisateur
Modifier l’adresse courriel de l’utilisateur
Mettre à jour le profil de l’utilisateur
Vous pouvez aussi utiliser le Write Hook pour définir automatiquement des valeurs par défaut pour les nouveaux utilisateurs. Par exemple, vous pourriez attribuer automatiquement à un utilisateur le même groupe, le même service ou le même fournisseur que celui qui vous a été attribué.
Auth0 prend uniquement en charge la création d’utilisateurs avec des connexions de base de données.
request.originalUser : Valeurs de l’utilisateur actuel, où payload contient le nouvel ensemble de champs. Disponible uniquement lorsque la méthode est update.
payload : Objet payload
memberships : Tableau des appartenances sélectionnées dans l’interface lors de la création de l’utilisateur.
email : Adresse courriel de l’utilisateur.
password : Mot de passe de l’utilisateur.
connection : Nom de la connexion à la base de données.
app_metadata : Données incluses si un champ personnalisé en cours de modification est enregistré dans app_metadata.
user_metadata : Données incluses si un champ personnalisé en cours de modification est enregistré dans user_metadata.
userFields : Tableau des champs utilisateur (si précisé dans la requête de paramètres)
method : create ou update, selon que cet appel résulte d’une création ou d’une mise à jour.
callback(error, user) : Fonction de rappel à laquelle vous pouvez renvoyer une erreur ainsi que l’objet utilisateur à envoyer à la .
Kelly gère le service des finances. Lorsqu’elle crée des utilisateurs, ceux-ci doivent être ajoutés comme membres du service des finances.
function(ctx, callback) { var newProfile = { email: ctx.payload.email, password: ctx.payload.password, connection: ctx.payload.connection, user_metadata: ctx.payload.user_metadata, app_metadata: { department: ctx.payload.memberships && ctx.payload.memberships[0], ...ctx.payload.app_metadata } }; if (!ctx.payload.memberships || ctx.payload.memberships.length === 0) { return callback(new Error('The user must be created within a department.')); } // Obtenir le département à partir des métadonnées de l'utilisateur actuel. var currentDepartment = ctx.request.user.app_metadata && ctx.request.user.app_metadata.department; if (!currentDepartment || !currentDepartment.length) { return callback(new Error('The current user is not part of any department.')); } // Si vous n'êtes pas dans le département TI, vous ne pouvez créer des utilisateurs que dans votre propre département. // Le département TI peut créer des utilisateurs dans tous les départements. if (currentDepartment !== 'IT' && ctx.payload.memberships[0] !== currentDepartment) { return callback(new Error('You can only create users within your own department.')); } if (ctx.method === 'update') { // En cas de mise à jour, ne définir que les champs à envoyer Object.keys(newProfile).forEach(function(key) { if (newProfile[key] === ctx.request.originalUser[key]) delete newProfile[key]; }); } // Voici la charge utile qui sera envoyée à l'API v2. Vous avez un contrôle total sur la façon dont l'utilisateur est créé dans l'API v2. return callback(null, newProfile);}