Documentation Index
Fetch the complete documentation index at: https://docs-staging.auth0-mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Le script Verify implémente la fonction exécutée pour marquer l’état de vérification de l’adresse courriel d’un utilisateur dans une base de données externe. Nous recommandons de nommer cette fonction verify.
Ce script n’est utilisé que dans les scénarios d’authentification anciens et est nécessaire pour prendre en charge la vérification de l’adresse courriel de l’utilisateur. Une adresse courriel vérifiée est essentielle pour un certain nombre de scénarios de flux de travail dans Auth0, et l’implémentation de ce script permettra de les prendre en charge dès le départ.
S’il est activé, ce script est exécuté lorsqu’un utilisateur clique sur le lien dans le courriel de vérification envoyé par Auth0.
Fonction verify
La fonction verify doit effectuer ce qui suit :
- Mettre à jour l’attribut
email_verified (ou équivalent) du profil de l’utilisateur dans la base de données externe.
- Renvoyer
true si l’action de mise à jour a réussi.
- Renvoyer une erreur en cas d’échec.
Définition
La fonction verify accepte deux paramètres et renvoie une fonction de callback :
verify(email, callback): function
| Paramètre | Type | Description |
|---|
email | chaîne | adresse courriel de l’utilisateur. |
callback | Fonction | Utilisé pour transmettre des données d’erreur ou de profil par le pipeline. |
Exemple
Il s’agit d’un exemple pseudo-JavaScript de la manière dont vous pourriez implémenter la fonction login. Pour des exemples spécifiques à un langage, consultez Exemples de scripts spécifiques à un langage.
function verify(email, callback) {
// Send email to external database API
let options = {
url: "https://example.com/api/verify",
body: {
email: email
}
};
send(options, (err) => {
// Return error in callback if update failed
if (err) {
return callback(new Error(email, "My custom error message."));
} else {
// Return true in callback if update succeeded
return callback(null, true);
}
});
}
Fonction callback
La fonction callback sert à transmettre les données de profil utilisateur ou d’erreur dans le circuit.
Définition
La fonction callback accepte deux paramètres et renvoie une fonction :
callback(error, [verified]): function
| Paramètre | Type | Requis | Description |
|---|
error | Objet | Requis | Contient des données d’erreur. |
verified | Booléen | Facultatif | Contient des valeurs qui représentent le statut de vérification de l’utilisateur dans la base de données externe (true ou false). Requis uniquement si la valeur est true. |
Renvoyer un succès
Si le statut de vérification de l’utilisateur a été mis à jour avec succès dans la base de données externe, transmettez une valeur null pour le paramètre error et une valeur true pour le paramètre verified.
Le script de vérification ne modifie pas la valeur de l’attribut email_verified dans le profil Auth0 de l’utilisateur, quelle que soit la valeur renvoyée dans la fonction rappel.Pour mettre à jour l’attribut email_verified dans le profil Auth0 de l’utilisateur, vous devez inclure l’attribut email_verified et sa valeur dans l’objet de profil utilisateur renvoyé dans les scripts Login (Connexion) et Get User (Obtenir un utilisateur).
Exemple
Renvoyer une erreur
Si une erreur se produit, le paramètre error doit contenir des informations expliquant l’échec.
Exemple
return callback(new Error("My custom error message."));
Exemples de scripts spécifiques à un langage
Auth0 fournit des exemples de scripts à utiliser pour les langages/technologies suivants :
JavaScript
function verify(email, callback) {
// This script should mark the current user's email address as verified in
// your database.
// It is executed whenever a user clicks the verification link sent by email.
// These emails can be customized at https://manage.auth0.com/#/emails.
// It is safe to assume that the user's email already exists in your database,
// because verification emails, if enabled, are sent immediately after a
// successful signup.
//
// There are two ways that this script can finish:
// 1. The user's email was verified successfully
// callback(null, true);
// 2. Something went wrong while trying to reach your database:
// callback(new Error("my error message"));
//
// If an error is returned, it will be passed to the query string of the page
// where the user is being redirected to after clicking the verification link.
// For example, returning `callback(new Error("error"))` and redirecting to
// https://example.com would redirect to the following URL:
// https://example.com?email=alice%40example.com&message=error&success=false
const msg = 'Please implement the Verify 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 verify(email, 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);
verifyMembershipUser(email, function(err, wasUpdated) {
if (err) return callback(err); // this will return a 500
callback(null, wasUpdated);
});
});
function verifyMembershipUser(email, callback) {
// isApproved field is the email verification flag
const updateMembership =
'UPDATE Memberships SET isApproved = \'true\' ' +
'WHERE isApproved = \'false\' AND Email = @Email';
const updateMembershipQuery = new Request(updateMembership, function(err, rowCount) {
if (err) {
return callback(err);
}
callback(null, rowCount > 0);
});
updateMembershipQuery.addParameter('Email', TYPES.VarChar, email);
connection.execSql(updateMembershipQuery);
}
}
ASP.NET Membership Provider (MVC4 - Simple Membership)
function verify (email, 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);
verifyMembershipUser(email, function(err, wasUpdated) {
if (err) return callback(err); // this will return a 500
callback(null, wasUpdated);
});
});
function findUserId(email, callback) {
const findUserIdFromEmail =
'SELECT UserProfile.UserId FROM ' +
'UserProfile INNER JOIN webpages_Membership ' +
'ON UserProfile.UserId = webpages_Membership.UserId ' +
'WHERE UserName = @Username';
const findUserIdFromEmailQuery = new Request(findUserIdFromEmail, function (err, rowCount, rows) {
if (err || rowCount < 1) return callback(err);
const userId = rows[0][0].value;
callback(null, userId);
});
findUserIdFromEmailQuery.addParameter('Username', TYPES.VarChar, email);
connection.execSql(findUserIdFromEmailQuery);
}
function verifyMembershipUser(email, callback) {
findUserId(email, function (err, userId) {
if (err || !userId) return callback(err);
// isConfirmed field is the email verification flag
const updateMembership =
'UPDATE webpages_Membership SET isConfirmed = \'true\' ' +
'WHERE isConfirmed = \'false\' AND UserId = @UserId';
const updateMembershipQuery = new Request(updateMembership, function (err, rowCount) {
return callback(err, rowCount > 0);
});
updateMembershipQuery.addParameter('UserId', TYPES.VarChar, userId);
connection.execSql(updateMembershipQuery);
});
}
}
MongoDB
function verify (email, 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');
const query = { email: email, email_verified: false };
users.update(query, { $set: { email_verified: true } }, function (err, count) {
client.close();
if (err) return callback(err);
callback(null, count > 0);
});
});
}
MySQL
function verify(email, callback) {
const mysql = require('mysql');
const connection = mysql({
host: 'localhost',
user: 'me',
password: 'secret',
database: 'mydb'
});
connection.connect();
const query = 'UPDATE users SET email_Verified = true WHERE email_Verified = false AND email = ?';
connection.query(query, [ email ], function(err, results) {
if (err) return callback(err);
callback(null, results.length > 0);
});
}
PostgreSQL
function verify (email, 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 = 'UPDATE users SET email_Verified = true WHERE email_Verified = false AND email = $1';
client.query(query, [email], function (err, result) {
// NOTE: always call `done()` here to close
// the connection to the database
done();
return callback(err, result && result.rowCount > 0);
});
});
}
SQL Server
function verify (email, 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 = 'UPDATE dbo.Users SET Email_Verified = true WHERE Email_Verified = false AND Email = @Email';
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, rows) {
if (err) return callback(err);
callback(null, rows > 0);
});
request.addParameter('Email', TYPES.VarChar, email);
connection.execSql(request);
});
}
Base de données Azure SQL Windows
function verify (email, 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
}
});
var query =
'UPDATE Users SET Email_Verified=\'TRUE\' ' +
'WHERE Email_Verified=\'FALSE\' AND Email=@Email';
connection.on('debug', function(text) {
// Uncomment next line in order to enable debugging messages
// console.log(text);
}).on('errorMessage', function(text) {
console.log(JSON.stringify(text, null, 2));
}).on('infoMessage', function(text) {
// Uncomment next line in order to enable information messages
// console.log(JSON.stringify(text, null, 2));
});
connection.on('connect', function (err) {
if (err) { return callback(err); }
var request = new Request(query, function (err, rows) {
if (err) { return callback(err); }
console.log('rows: ' + rows);
callback(null, rows > 0);
});
request.addParameter('Email', TYPES.VarChar, email);
connection.execSql(request);
});
}
En savoir plus