Saltar al contenido principal
Si es un usuario con el rol Delegated Admin - Administrator asignado, puede gestionar los distintos Hooks de extensión y las consultas que le permiten personalizar el comportamiento de la extensión Delegated Administration. Para acceder al área de configuración:
  1. Inicie sesión en el panel de Delegated Administration.
  2. Haga clic en su nombre en la esquina superior derecha. Verá un menú desplegable; haga clic en la opción Configure.
La página Configuration a la que se le redirige es donde puede gestionar sus Hooks y consultas.

Contexto de los hooks de extensión

El objeto de contexto (ctx) expone algunas funciones auxiliares e información sobre la solicitud actual. Los siguientes métodos y propiedades están disponibles en cada hook de extensión:
  • Registro
  • Almacenamiento en caché
  • Datos personalizados
  • Carga útil y solicitud
  • Llamadas remotas

Registro

Para añadir un mensaje a los registros en tiempo real de Actions (que puede consultar con Actions Real-time Logs), llame al método log:
function(ctx, callback) {
  ctx.log('Logging action:', ctx.payload.action);
  return callback();
}

Almacenamiento en caché

Para almacenar algo en caché (como una lista larga de departamentos), puede guardarlo en el objeto global del contexto. Este objeto estará disponible hasta que se recicle el contenedor de registros en tiempo real de Actions.
function(ctx, callback) {
  ctx.global.departments = [ 'IT', 'HR', 'Finance' ];
  return callback();
}

Datos personalizados

Puede almacenar datos personalizados en la extensión. Este campo está limitado a 400 KB de datos.
var data = {
departments: [ 'IT', 'HR', 'Finance' ]
};

ctx.write(data)
.then(function() {
    // ...
})
.catch(function(err) {
    // ...
});
Para leer los datos:
ctx.read()
.then(function(data) {
    // ...
})
.catch(function(err) {
    // ...
});

Carga útil y solicitud

Cada hook de extensión expone la carga útil o la solicitud actuales con información específica. La solicitud siempre contendrá información sobre el usuario que ha iniciado sesión en el panel de usuarios:
function(ctx, callback) {
  ctx.log('Current User:', ctx.request.user);
  return callback();
}

Llamadas remotas

Si quiere llamar a un servicio externo (como una API) para validar datos o cargar membresías, puede hacerlo con el módulo request.
function(ctx, callback) {
var request = require('request');
    request('http://api.mycompany.com/departments', function (error, response, body) {
        if (error) {
        return callback(error);
        }

        // ...
    });
}

Contrato del hook

  • ctx: El objeto de contexto
    • payload: El objeto de carga útil
      • action: La acción actual (por ejemplo, delete:user) que se está ejecutando
      • user: El usuario sobre el que se ejecuta la acción
  • callback(error): La función de devolución de llamada en la que puede devolver un error si se deniega el acceso

Ejemplo de uso

Kelly administra el departamento de Finanzas y solo debe poder acceder a los usuarios de su departamento.
function(ctx, callback) {
  if (ctx.payload.action === 'delete:user') {
    return callback(new Error('You are not allowed to delete users.'));
  }

  // Obtener el departamento de los metadatos del usuario actual.
  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.'));
  }

  // El departamento de TI puede acceder a todos los usuarios.
  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 este hook no está configurado, se podrá acceder a todos los usuarios. Nombres de acción admitidos:
  • 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 de extensión disponibles

Los siguientes Hooks de extensión se pueden usar con la aplicación Delegated Administration:

Más información