deleteUser.
Ce script n’est utilisé que dans un scénario d’authentification héritée 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
deleteUser doit :
- Supprimer l’utilisateur spécifié de la base de données externe.
- Retourner une valeur
nullsi la suppression a réussi. - Retourner une erreur si la suppression a échoué.
Définition
deleteUser accepte deux paramètres et renvoie une fonction de rappel :
deleteUser(id, callback): function
| Paramètre | Type | Description |
|---|---|---|
id | String | L’identity user_id de l’utilisateur. Ne commence pas par auth0. |
callback | Function | Utilisé pour transmettre une erreur ou des données de profil via le pipeline. |
deleteUser :
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 null dans le callback si la suppression a réussi
return callback(null);
});
}
Fonction de rappel
callback accepte un paramètre et renvoie une fonction.
Définition
callback(error): function
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
error | Objet | Obligatoire | Contient les données d’erreur. |
Retourner une réussite
null pour le paramètre error :
return callback(null);
Retourner une erreur
error les renseignements pertinents sur l’erreur :
return callback(new Error("My custom error message."));
Exemples de scripts par langage
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é à partir de la Management API ou du tableau de bord Auth0.
//
// Ce script peut se terminer de deux façons :
// 1. L'utilisateur a été supprimé avec succès :
// callback(null);
// 2. Un problème est survenu en tentant d'accéder à 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));
}
// Pour ASP.NET Membership Provider (MVC3 - fournisseurs Universal)
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) {
// ceci affichera toutes 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);
}
}
// Pour 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) {
// ceci affichera toutes 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);
}
}
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);
});
});
}
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);
});
}
function remove(id, callback) {
//cet exemple utilise la bibliothèque « pg »
//plus d'infos 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);
});
});
}
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);
});
}
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);
});
}