Modèles de script de suppression
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, 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
:
deleteUser(id, callback): function
Was this helpful?
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.
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);
});
}
Was this helpful?
Fonction de rappel
La fonction de callback
accepte un paramètre et renvoie une fonction.
Définition
callback(error): function
Was this helpful?
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
return callback(null);
Was this helpful?
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
return callback(new Error("My custom error message."));
Was this helpful?
Exemples de scripts propres à une langue
Auth0 fournit des exemples de scripts à utiliser avec les langages/technologies ci-dessous :
Fournisseur d’appartenances ASP.NET (MVC3 – Fournisseurs universels)
Fournisseur d’appartenances ASP.NET (MVC4 – Appartenance simple)
JavaScript
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));
}
Was this helpful?
Fournisseur d’appartenances ASP.NET (MVC3 – Fournisseurs universels)
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);
}
}
Was this helpful?
Fournisseur d’appartenances ASP.NET (MVC4 – Appartenance simple)
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);
}
}
Was this helpful?
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);
});
});
}
Was this helpful?
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);
});
}
Was this helpful?
PostgreSQL
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);
});
});
}
Was this helpful?
Serveur SQL
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);
});
}
Was this helpful?
Base de données SQL de Windows Azure
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);
});
}
Was this helpful?