Vérification d'e-mails avec Auth0
Les Actions d'Auth0 sont des fonctions serverless qui s'exécutent pendant le pipeline d'authentification. Le déclencheur pre-user-registration tourne avant la création d'un nouvel utilisateur dans Auth0 : c'est l'endroit idéal pour vérifier une adresse avec Mailbeam.
Prérequis
- Un compte Auth0 avec un tenant
- Une clé d'API Mailbeam (inscription gratuite)
Créer l'Action
Dans le tableau de bord Auth0 → Actions → Library, créez une Action pour le déclencheur Pre User Registration.
// Auth0 Action : pre-user-registration
exports.onExecutePreUserRegistration = async (event, api) => {
const email = event.user.email;
// Ignore les connexions sociales (pas d'adresse fournie à ce stade)
if (!email) return;
const MAILBEAM_KEY = event.secrets.MAILBEAM_KEY;
const MIN_SCORE = 60;
try {
const response = await fetch("https://api.mailbeam.dev/v1/verify", {
method: "POST",
headers: {
Authorization: `Bearer ${MAILBEAM_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ email }),
});
if (!response.ok) {
// Erreur d'API — échec permissif
console.log("[Mailbeam] réponse non-200, on laisse passer");
return;
}
const { valid, score, reason } = await response.json();
if (!valid || score < MIN_SCORE) {
const message = reason === "disposable_domain"
? "Merci d'utiliser une adresse e-mail permanente."
: "Merci de fournir une adresse e-mail valide et joignable.";
api.access.deny("invalid_email", message);
}
} catch (err) {
// Erreur réseau — échec permissif
console.error("[Mailbeam] erreur de vérification :", err.message);
}
};Ajouter la clé d'API comme secret
Dans l'éditeur d'Action, allez dans Secrets et ajoutez :
| Nom | Valeur |
|---|---|
MAILBEAM_KEY | mb_live_xxxxxxxxxxxxxxxxxxxx |
Déployer et brancher
- Cliquez sur Deploy dans l'éditeur d'Action
- Allez dans Actions → Flows → Pre User Registration
- Faites glisser votre Action dans le flux
- Cliquez sur Apply
Tester
// Testez depuis l'onglet Action Testing d'Auth0 avec :
{
"user": {
"email": "temp@mailinator.com"
}
}
// Attendu : api.access.deny est appelé avec l'erreur "invalid_email"Comment fonctionne api.access.deny
Quand api.access.deny est appelé, Auth0 renvoie une erreur au client :
{
"error": "invalid_email",
"error_description": "Merci d'utiliser une adresse e-mail permanente."
}Votre front-end la reçoit dans le callback d'erreur d'Auth0 et peut l'afficher à l'utilisateur.
Bonnes pratiques
- Échouez toujours en mode permissif (revenez sans appeler
api.access.deny) en cas d'erreur d'API - Utilisez
event.secretspour la clé d'API — jamais de valeur en dur - Journalisez les erreurs avec
console.error: elles apparaissent dans les logs du tenant Auth0