> ## Documentation Index
> Fetch the complete documentation index at: https://docs-dev-actions-triggers-prototype.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Modèles de script de suppression

> Cet article décrit les modèles de scripts d’action personnalisés des bases de données pour la suppression des utilisateurs.

Le script de suppression met en œuvre la fonction définie pour supprimer un utilisateur donné d’une base de données externe. Il est recommandé de nommer cette fonction `deleteUser`.

Le script est seulement utilisé dans un [scénario d’authentification héritée](/docs/fr-ca/authenticate/database-connections/custom-db/overview-custom-db-connections), et est exigé si vous souhaitez supprimer un utilisateur d’Auth0 et de votre base de données externe au cours de la même opération.

## Fonction DeleteUser

La fonction `deleteUser` permet de :

* Supprimer l’utilisateur indiqué de la base de données externe.
* Renvoyer une valeur `nulle` si la suppression a abouti.
* Renvoyer un message d’erreur en cas d’échec.

### Définition

La fonction `deleteUser` accepte deux paramètres et renvoie une fonction de `callback` :

```javascript lines theme={null}
deleteUser(id, callback): function
```

| Paramètre  | Type     | Description                                                                   |
| ---------- | -------- | ----------------------------------------------------------------------------- |
| `id`       | Chaîne   | Identité de l’utilisateur `user_id`. Ne commence pas par `auth0`.             |
| `callback` | Fonction | Utilisée pour transmettre les données d’erreur ou de profil dans le pipeline. |

### Exemple

Voici un exemple fictif en JavaScript de la manière dont vous pourriez implémenter la fonction  `deleteUser`. Pour voir des exemples propres à une langue, consulter [Exemples de scripts propres à une langue](https://auth0.com/docs/authenticate/database-connections/custom-db/templates/delete#language-specific-script-examples).

```javascript lines theme={null}
function deleteUser(id, callback) {
  // Send user identifier to external database API
  let options = {
    url: "https://example.com/api/deleteUser",
    body: {
      id: id
    }
  };

  send(options, (err, profileData) => {
    // Return error in callback if deletion failed
    if (err) {
      return callback(new Error("My custom error message."));
    }

    // Return null value in callback if deletion succeeded
    return callback(null);
  });
}
```

## Fonction de rappel

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

### Définition

```javascript lines theme={null}
callback(error): function
```

| Paramètre | Type  | Requis | Description                    |
| --------- | ----- | ------ | ------------------------------ |
| `error`   | Objet | Requis | Contient des données d’erreur. |

### Retourne un succès

Si l’utilisateur a été correctement supprimé dans votre base de données externe, renvoyez la fonction de `callback` et transmettez une valeur `nulle` pour le paramètre `error`.

#### Exemple

```javascript lines theme={null}
return callback(null);
```

### Renvoyer une erreur

Si une erreur survient, renvoyez la fonction de `callback`, et transmettez l’information pertinente concernant l’erreur au paramètre `error` :

#### Exemple

```javascript lines theme={null}
return callback(new Error("My custom error message."));
```

## Exemples de scripts propres à une langue

Auth0 fournit des exemples de scripts à utiliser avec les langages/technologies ci-dessous :

* [JavaScript](#javascript)
* [Fournisseur d’appartenances ASP.NET (MVC3 – Fournisseurs universels)](#asp-net-membership-provider-mvc3-universal-providers-)
* [Fournisseur d’appartenances ASP.NET (MVC4 – Appartenance simple)](#asp-net-membership-provider-mvc4-simple-membership-)
* [MongoDB](#mongodb)
* [MySQL](#mysql)
* [PostgreSQL](#postgresql)
* [Serveur SQL](#sql-server)
* [Base de données SQL Windows Azure](#windows-azure-sql-database)

### JavaScript

```javascript lines theme={null}
function remove (id, callback) {
  // This script remove a user from your existing database.
  // It is executed whenever a user is deleted from the Management API or Auth0 dashboard.
  //
  // There are two ways that this script can finish:
  // 1. The user was removed successfully:
  //     callback(null);
  // 2. Something went wrong while trying to reach your database:
  //     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));
}
```

### Fournisseur d’appartenances ASP.NET (MVC3 – Fournisseurs universels)

```javascript lines theme={null}
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,
      // Required to retrieve userId needed for Membership entity creation
      rowCollectionOnRequestCompletion: true
    }
  });
  connection.on('debug', function(text) {
    // if you have connection issues, uncomment this to get more detailed info
    // console.log(text);
  }).on('errorMessage', function(text) {
    // this will show any errors when connecting to the SQL database or with the SQL statements
    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);
  }
}
```

### Fournisseur d’appartenances ASP.NET (MVC4 – Appartenance simple)

```javascript lines theme={null}
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,
      // Required to retrieve userId needed for Membership entity creation
      rowCollectionOnRequestCompletion: true
    }
  });
  connection.on('debug', function (text) {
    // if you have connection issues, uncomment this to get more detailed info
    // console.log(text);
  }).on('errorMessage', function (text) {
    // this will show any errors when connecting to the SQL database or with the SQL statements
    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

```javascript lines theme={null}
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

```javascript lines theme={null}
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

```javascript lines theme={null}
function remove(id, callback) {
  //this example uses the "pg" library
  //more info here: 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) {
      // NOTE: always call `done()` here to close
      // the connection to the database
      done();
      return callback(err);
    });
  });
}
```

### Serveur SQL

```javascript lines theme={null}
function remove(id, callback) {
  // this example uses the "tedious" library
  // more info here: 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

```javascript lines theme={null}
function remove (id, callback) {
  // this example uses the "tedious" library
  // more info here: 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

* [Modifier les modèles de script de mot de passe](/docs/fr-ca/authenticate/database-connections/custom-db/templates/change-password)
* [Créer des modèles de script](/docs/fr-ca/authenticate/database-connections/custom-db/templates/create)
* [Modèles de script Get User](/docs/fr-ca/authenticate/database-connections/custom-db/templates/get-user)
* [Modèles de script de connexion](/docs/fr-ca/authenticate/database-connections/custom-db/templates/login)
* [Modèles de scripts Verify](/docs/fr-ca/authenticate/database-connections/custom-db/templates/verify)
* [Modifier le modèle de script de courriel](/docs/fr-ca/authenticate/database-connections/custom-db/templates/change-email)
