Passer au contenu principal
Le script Delete implémente la fonction définie pour supprimer un utilisateur précis d’une base de données externe. Nous vous recommandons de nommer cette fonction deleteUser. Ce script est utilisé uniquement dans un scénario d’authentification hérité et il est requis si vous souhaitez supprimer un utilisateur d’Auth0 et de votre base de données externe dans la même opération.

Fonction DeleteUser

La fonction deleteUser doit :
  • Supprimer l’utilisateur spécifié de la base de données externe.
  • Renvoyer une valeur null si la suppression a réussi.
  • Renvoyer une erreur si la suppression a échoué.

Définition

La fonction deleteUser accepte deux paramètres et renvoie une fonction callback :
deleteUser(id, callback): function
ParamètreTypeDescription
idChaîneuser_id d’identité de l’utilisateur. Ne commence pas par auth0.
callbackFonctionSert à transmettre les erreurs ou les données du profil dans le pipeline.

Exemple

Voici un exemple en pseudo-JavaScript montrant comment vous pourriez implémenter la fonction deleteUser. Pour des exemples propres à chaque langage, consultez Exemples de scripts propres à chaque langage.
function deleteUser(id, callback) {
  // Envoyer l'identifiant de l'utilisateur à l'API de base de données externe
  let options = {
    url: "https://example.com/api/deleteUser",
    body: {
      id: id
    }
  };

  send(options, (err, profileData) => {
    // Retourner une erreur dans le callback si la suppression a échoué
    if (err) {
      return callback(new Error("My custom error message."));
    }

    // Retourner une valeur nulle dans le callback si la suppression a réussi
    return callback(null);
  });
}

Fonction de rappel

La fonction callback accepte un paramètre et renvoie une fonction.

Définition

callback(error): function
ParamètreTypeObligatoireDescription
errorObjetObligatoireContient les données d’erreur.

Retourner un succès

Si l’utilisateur a bien été supprimé de votre base de données externe, retournez la fonction callback et transmettez une valeur null pour le paramètre error.

Exemple

return callback(null);

Renvoyer une erreur

Si une erreur se produit, renvoyez la fonction callback et transmettez les renseignements pertinents sur l’erreur au paramètre error.

Exemple

return callback(new Error("My custom error message."));

Exemples de scripts par langage

Auth0 fournit des scripts d’exemple pour les langages et technologies suivants :

JavaScript

function remove (id, callback) {
  // Ce script supprime un utilisateur de votre base de données existante.
  // Il est exécuté chaque fois qu'un utilisateur est supprimé via la Management API ou le Auth0 Dashboard.
  //
  // Ce script peut se terminer de deux façons :
  // 1. L'utilisateur a été supprimé avec succès :
  //     callback(null);
  // 2. Une erreur s'est produite lors de la tentative d'accès à votre base de données :
  //     callback(new Error("my error message"));
  var msg = "Please implement the Delete script for this database " +
       "connection at https://manage.auth0.com/#/connections/database";
  return callback(new Error(msg));
}

ASP.NET Membership Provider (MVC3 - Universal Providers)

function remove(id, callback) {
  const sqlserver = require('tedious@1.11.0');
  const Connection = sqlserver.Connection;
  const Request = sqlserver.Request;
  const TYPES = sqlserver.TYPES;
  const connection = new Connection({
    userName: 'the username',
    password: 'the password',
    server: 'the server',
    options: {
      database: 'the db name',
      encrypt: true,
      // Requis pour récupérer l'userId nécessaire à la création de l'entité Membership
      rowCollectionOnRequestCompletion: true
    }
  });
  connection.on('debug', function(text) {
    // en cas de problèmes de connexion, décommentez ceci pour obtenir des informations plus détaillées
    // console.log(text);
  }).on('errorMessage', function(text) {
    // affiche les erreurs lors de la connexion à la base de données SQL ou avec les instructions SQL
    console.log(JSON.stringify(text));
  });
  connection.on('connect', function(err) {
    if (err) return callback(err);
    executeDelete(['Memberships', 'Users'], function(err) {
      if (err) return callback(err);
      callback(null);
    });
  });
  function executeDelete(tables, callback) {
    const query = tables.map(function(table) {
      return 'DELETE FROM ' + table + ' WHERE UserId = @UserId';
    }).join(';');
    const request = new Request(query, function(err) {
      if (err) return callback(err);
      callback(null);
    });
    request.addParameter('UserId', TYPES.VarChar, id);
    connection.execSql(request);
  }
}

ASP.NET Membership Provider (MVC4 - Simple Membership)

function remove(id, callback) {
  const sqlserver = require('tedious@1.11.0');
  const Connection = sqlserver.Connection;
  const Request = sqlserver.Request;
  const TYPES = sqlserver.TYPES;
  const connection = new Connection({
    userName: 'the username',
    password: 'the password',
    server: 'the server',
    options: {
      database: 'the db name',
      encrypt: true,
      // Requis pour récupérer l'userId nécessaire à la création de l'entité Membership
      rowCollectionOnRequestCompletion: true
    }
  });
  connection.on('debug', function (text) {
    // si vous avez des problèmes de connexion, décommentez ceci pour obtenir des informations plus détaillées
    // console.log(text);
  }).on('errorMessage', function (text) {
    // affiche les erreurs lors de la connexion à la base de données SQL ou avec les instructions SQL
    console.log(JSON.stringify(text));
  });
  connection.on('connect', function (err) {
    if (err) return callback(err);
    executeDelete(['webpages_Membership', 'UserProfile'], function (err) {
      if (err) return callback(err);
      callback(null);
    });
  });
  function executeDelete(tables, callback) {
    const query = tables.map(function (table) {
      return 'DELETE FROM ' + table + ' WHERE UserId = @UserId';
    }).join(';');
    const request = new Request(query, function (err) {
      if (err) return callback(err);
      callback(null);
    });
    request.addParameter('UserId', TYPES.VarChar, id);
    connection.execSql(request);
  }
}

MongoDB

function remove(id, callback) {
  const MongoClient = require('mongodb@3.1.4').MongoClient;
  const client = new MongoClient('mongodb://user:pass@mymongoserver.com');
  client.connect(function (err) {
    if (err) return callback(err);
    const db = client.db('db-name');
    const users = db.collection('users');
    users.remove({ _id: id }, function (err) {
      client.close();
      if (err) return callback(err);
      callback(null);
    });
  });
}

MySQL

function remove(id, callback) {
  const mysql = require('mysql');
  const connection = mysql({
    host: 'localhost',
    user: 'me',
    password: 'secret',
    database: 'mydb'
  });
  connection.connect();
  const query = 'DELETE FROM users WHERE id = ?';
  connection.query(query, [ id ], function(err) {
    if (err) return callback(err);
    callback(null);
  });
}

PostgreSQL

function remove(id, callback) {
  //cet exemple utilise la bibliothèque "pg"
  //plus d'informations ici : https://github.com/brianc/node-postgres
  const postgres = require('pg');
  const conString = 'postgres://user:pass@localhost/mydb';
  postgres.connect(conString, function (err, client, done) {
    if (err) return callback(err);
    const query = 'DELETE FROM users WHERE id = $1';
    client.query(query, [id], function (err) {
      // REMARQUE : appelez toujours `done()` ici pour fermer
      // la connexion à la base de données
      done();
      return callback(err);
    });
  });
}

SQL Server

function remove(id, callback) {
  // cet exemple utilise la bibliothèque "tedious"
  // plus d'informations ici : http://pekim.github.io/tedious/index.html
  const sqlserver = require('tedious@1.11.0');
  const Connection = sqlserver.Connection;
  const Request = sqlserver.Request;
  const TYPES = sqlserver.TYPES;
  const connection = new Connection({
    userName:  'test',
    password:  'test',
    server:    'localhost',
    options:  {
      database: 'mydb'
    }
  });
  const query = 'DELETE FROM dbo.Users WHERE id = @UserId';
  connection.on('debug', function (text) {
    console.log(text);
  }).on('errorMessage', function (text) {
    console.log(JSON.stringify(text, null, 2));
  }).on('infoMessage', function (text) {
    console.log(JSON.stringify(text, null, 2));
  });
  connection.on('connect', function (err) {
    if (err) return callback(err);
    const request = new Request(query, function (err) {
      if (err) return callback(err);
      callback(null);
    });
    request.addParameter('UserId', TYPES.VarChar, id);
    connection.execSql(request);
  });
}

Base de données SQL de Windows Azure

function remove (id, callback) {
  // cet exemple utilise la bibliothèque "tedious"
  // plus d'informations ici : http://pekim.github.io/tedious/index.html
  var Connection = require('tedious@1.11.0').Connection;
  var Request = require('tedious@1.11.0').Request;
  var TYPES = require('tedious@1.11.0').TYPES;
  var connection = new Connection({
    userName: 'your-user@your-server-id.database.windows.net',
    password: 'the-password',
    server: 'your-server-id.database.windows.net',
    options: {
      database: 'mydb',
      encrypt: true
    }
  });
  connection.on('debug', function (text) {
    console.log(text);
  }).on('errorMessage', function (text) {
    console.log(JSON.stringify(text, null, 2));
  }).on('infoMessage', function (text) {
    console.log(JSON.stringify(text, null, 2));
  });
  connection.on('connect', function (err) {
    if (err) { return callback(err); }
    var query = 'DELETE FROM users WHERE id = @UserId';
    var request = new Request(query, function (err) {
      if (err) { return callback(err); }
      callback(null);
    });
    request.addParameter('UserId', TYPES.VarChar, id);
    connection.execSql(request);
  });
}

En savoir plus