Verifica delle email con Auth0
Le Actions di Auth0 sono funzioni serverless che girano durante la catena di autenticazione. Il trigger pre-user-registration viene eseguito prima che venga creato un nuovo utente in Auth0, il che ne fa il punto perfetto per verificare gli indirizzi email con Mailbeam.
Prerequisiti
- Un account Auth0 con un tenant
- Una chiave API di Mailbeam (iscriviti gratis)
Crea la Action
Nel pannello di Auth0 → Actions → Library, crea una nuova Action per il trigger Pre User Registration.
// Action di Auth0: pre-user-registration
exports.onExecutePreUserRegistration = async (event, api) => {
const email = event.user.email;
// Saltala negli accessi social (in questa fase non c'è un indirizzo email)
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) {
// Errore dell'API: lascia passare
console.log("[Mailbeam] l'API non ha restituito 200, lascio passare");
return;
}
const { valid, score, reason } = await response.json();
if (!valid || score < MIN_SCORE) {
const message = reason === "disposable_domain"
? "Usa un indirizzo email permanente."
: "Inserisci un indirizzo email valido e raggiungibile.";
api.access.deny("invalid_email", message);
}
} catch (err) {
// Errore di rete: lascia passare
console.error("[Mailbeam] errore di verifica:", err.message);
}
};Aggiungi la chiave API come segreto
Nell'editor della Action, vai su Secrets e aggiungi:
| Nome | Valore |
|---|---|
MAILBEAM_KEY | mb_live_xxxxxxxxxxxxxxxxxxxx |
Pubblica e aggancia
- Premi Deploy nell'editor della Action
- Vai su Actions → Flows → Pre User Registration
- Trascina la tua nuova Action nel flusso
- Premi Apply
Prova
// Provala dalla scheda di testing delle Actions di Auth0 con:
{
"user": {
"email": "temp@mailinator.com"
}
}
// Atteso: viene chiamata api.access.deny con l'errore "invalid_email"Come funziona api.access.deny
Quando viene chiamata api.access.deny, Auth0 restituisce un errore al client:
{
"error": "invalid_email",
"error_description": "Usa un indirizzo email permanente."
}Il tuo frontend lo riceve dentro il callback di errore di Auth0 e può mostrarlo alla persona.
Buone pratiche
- In caso di errore dell'API lascia sempre passare (torna senza chiamare
api.access.deny) - Usa
event.secretsper la chiave API: non scriverla mai nel codice - Registra gli errori con
console.error: compaiono nei registri del tenant di Auth0