Saltar al contenido principal
Dado que Filter Hook solo aplica lógica de filtrado, necesitará una segunda capa de lógica para determinar si el usuario actual (o la persona que actúa como administrador) puede acceder a un usuario específico. Para obtener más información sobre Filter Hook, consulte Delegated Administration: Filter Hook. El Access Hook le permite determinar si el usuario actual puede leer, eliminar, bloquear, desbloquear o actualizar un usuario específico.

Contrato del hook

  • ctx: Objeto de contexto.
    • payload: Objeto de carga útil.
      • action: Acción actual (por ejemplo, delete:user) que se está ejecutando.
      • user: Usuario sobre el que se ejecuta la acción.
  • callback(error): Función de callback a la que puede devolver un error si se deniega el acceso.

Ejemplo de uso

Kelly gestiona el departamento de Finanzas y solo debería 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();
}

Notas

Si este hook no está configurado, el usuario actual podrá acceder a todos los usuarios. El Hook admite los siguientes nombres de acción (que se establecen como valor de ctx.payload.action):
  • 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

Más información