Apprenez à utiliser le Write Hook avec la Delegated Administration Extension.
Le Write Hook, qui s’exécute chaque fois que vous créez ou mettez à jour un utilisateur, vous permet notamment de :
Modifier le Password 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 vouloir attribuer automatiquement à un utilisateur le même groupe, département ou fournisseur que ceux qui vous ont été attribués.
Auth0 prend uniquement en charge la création d’utilisateurs avec Database Connections.
request.originalUser : Valeurs de l’utilisateur actuel, où le payload représente 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 utilisateur 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 de 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 qu’il s’agit d’un appel de création ou de mise à jour.
callback(error, user) : Callback dans lequel vous pouvez retourner une erreur et l’objet user qui doit être envoyé à la .
Kelly gère le département des finances. Lorsqu’elle crée des utilisateurs, ceux-ci doivent être ajoutés comme membres du département 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.')); } // Récupérer 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 le payload qui sera envoyé à 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);}