Aprende a usar el Write Hook con la extensión de administración delegada.
El Write Hook, que se ejecuta cada vez que creas o actualizas un usuario, te permite hacer cosas como:
Cambiar la contraseña del usuario
Cambiar la dirección de correo electrónico del usuario
Actualizar el perfil del usuario
También puedes usar el Write Hook para establecer automáticamente valores predeterminados para los usuarios recién creados. Por ejemplo, puede que quieras asignar automáticamente a un usuario el mismo grupo, departamento o proveedor que te hayan asignado a ti.
Auth0 solo admite la creación de usuarios con Database Connections.
request.originalUser: Valores del usuario actual, donde el payload contiene el nuevo conjunto de campos. Solo está disponible cuando el método es update.
payload: Objeto de carga útil
memberships: Array de membresías seleccionadas en la IU al crear el usuario.
email: Dirección de correo electrónico del usuario.
password: Contraseña del usuario.
connection: Nombre de la conexión de base de datos.
app_metadata: Datos que se incluyen si un campo personalizado que se está modificando se guarda en app_metadata.
user_metadata: Datos que se incluyen si un campo personalizado que se está modificando se guarda en user_metadata.
userFields: Array de campos de usuario (si se especifica en la consulta de configuración)
method: create o update, según si se llama como resultado de una operación de creación o de actualización.
callback(error, user): Callback en el que puedes devolver un error y el objeto de usuario que debe enviarse a la .
Kelly gestiona el departamento de Finanzas. Cuando crea usuarios, estos deben asignarse al departamento de Finanzas como miembros.
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.')); } // Obtener el departamento de los metadatos del usuario actual. 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 no perteneces al departamento de IT, solo puedes crear usuarios dentro de tu propio departamento. // IT puede crear usuarios en todos los departamentos. 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') { // Si se actualiza, establecer solo los campos que necesitamos enviar Object.keys(newProfile).forEach(function(key) { if (newProfile[key] === ctx.request.originalUser[key]) delete newProfile[key]; }); } // Este es el payload que se enviará a API v2. Tienes control total sobre cómo se crea el usuario en API v2. return callback(null, newProfile);}