Personnaliser le traitement des courriels
Notre flux de courriel par défaut peut répondre aux exigences de la plupart des applications. Cependant, il arrive que vous ayez besoin d’une plus grande flexibilité, par exemple au moment de la mise en œuvre :
de la localisation;
d’URL de redirectionpersonnalisées basées sur l’utilisateur ou sur le locataire;
de différents modèles de courriel en fonction de l’application ou du locataire.
L’Auth0 Management API fournit des points de terminaison pour vous aider à gérer votre flux de courriel afin de contrôler quand et comment les courriels sont envoyés. Si nécessaire, vous pouvez également mettre en œuvre vos propres points de terminaison de messagerie personnalisés et utiliser ces points de terminaison de l’Auth0 Management API pour vous aider à gérer le reste du flux.
Courriels de vérification
Un courriel de vérification doit être envoyé à chaque utilisateur pour lequel la propriété email_vérified
est définie sur false
. En général, il s’agit d’utilisateurs connectés par base de données ou d’utilisateurs s’authentifiant auprès de fournisseurs de connexion par réseaux sociaux qui ne valident pas les adresses courriel lors de l’enregistrement d’un nouvel utilisateur.
Vous pouvez demander aux utilisateurs de vérifier leur adresse courriel avant de se connecter avec une règle :
Le point de terminaison Envoyer un courriel de vérification de l’adresse courriel envoie à l’utilisateur un courriel l’invitant à vérifier son adresse électronique.
curl --request POST \
--url 'https://{yourDomain}/api/v2/jobs/verification-email' \
--header 'authorization: Bearer {yourMgmtApiAccessToken}' \
--header 'content-type: application/json' \
--data '{ "user_id": "{userIdOfVerifyEmailRecipient}", "client_id": "{yourAppClientId}","identity": {"user_id": "5457edea1b8f22891a000004","provider": "google-oauth2"}, "organization_id": "{yourOrganizationId}" }'
Was this helpful?
var client = new RestClient("https://{yourDomain}/api/v2/jobs/verification-email");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddHeader("authorization", "Bearer {yourMgmtApiAccessToken}");
request.AddParameter("application/json", "{ \"user_id\": \"{userIdOfVerifyEmailRecipient}\", \"client_id\": \"{yourAppClientId}\",\"identity\": {\"user_id\": \"5457edea1b8f22891a000004\",\"provider\": \"google-oauth2\"}, \"organization_id\": \"{yourOrganizationId}\" }", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Was this helpful?
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://{yourDomain}/api/v2/jobs/verification-email"
payload := strings.NewReader("{ \"user_id\": \"{userIdOfVerifyEmailRecipient}\", \"client_id\": \"{yourAppClientId}\",\"identity\": {\"user_id\": \"5457edea1b8f22891a000004\",\"provider\": \"google-oauth2\"}, \"organization_id\": \"{yourOrganizationId}\" }")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "application/json")
req.Header.Add("authorization", "Bearer {yourMgmtApiAccessToken}")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
Was this helpful?
HttpResponse<String> response = Unirest.post("https://{yourDomain}/api/v2/jobs/verification-email")
.header("content-type", "application/json")
.header("authorization", "Bearer {yourMgmtApiAccessToken}")
.body("{ \"user_id\": \"{userIdOfVerifyEmailRecipient}\", \"client_id\": \"{yourAppClientId}\",\"identity\": {\"user_id\": \"5457edea1b8f22891a000004\",\"provider\": \"google-oauth2\"}, \"organization_id\": \"{yourOrganizationId}\" }")
.asString();
Was this helpful?
var axios = require("axios").default;
var options = {
method: 'POST',
url: 'https://{yourDomain}/api/v2/jobs/verification-email',
headers: {
'content-type': 'application/json',
authorization: 'Bearer {yourMgmtApiAccessToken}'
},
data: {
user_id: '{userIdOfVerifyEmailRecipient}',
client_id: '{yourAppClientId}',
identity: {user_id: '5457edea1b8f22891a000004', provider: 'google-oauth2'},
organization_id: '{yourOrganizationId}'
}
};
axios.request(options).then(function (response) {
console.log(response.data);
}).catch(function (error) {
console.error(error);
});
Was this helpful?
#import <Foundation/Foundation.h>
NSDictionary *headers = @{ @"content-type": @"application/json",
@"authorization": @"Bearer {yourMgmtApiAccessToken}" };
NSDictionary *parameters = @{ @"user_id": @"{userIdOfVerifyEmailRecipient}",
@"client_id": @"{yourAppClientId}",
@"identity": @{ @"user_id": @"5457edea1b8f22891a000004", @"provider": @"google-oauth2" },
@"organization_id": @"{yourOrganizationId}" };
NSData *postData = [NSJSONSerialization dataWithJSONObject:parameters options:0 error:nil];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://{yourDomain}/api/v2/jobs/verification-email"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
[request setHTTPMethod:@"POST"];
[request setAllHTTPHeaderFields:headers];
[request setHTTPBody:postData];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"%@", error);
} else {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSLog(@"%@", httpResponse);
}
}];
[dataTask resume];
Was this helpful?
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{yourDomain}/api/v2/jobs/verification-email",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "{ \"user_id\": \"{userIdOfVerifyEmailRecipient}\", \"client_id\": \"{yourAppClientId}\",\"identity\": {\"user_id\": \"5457edea1b8f22891a000004\",\"provider\": \"google-oauth2\"}, \"organization_id\": \"{yourOrganizationId}\" }",
CURLOPT_HTTPHEADER => [
"authorization: Bearer {yourMgmtApiAccessToken}",
"content-type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
Was this helpful?
import http.client
conn = http.client.HTTPSConnection("")
payload = "{ \"user_id\": \"{userIdOfVerifyEmailRecipient}\", \"client_id\": \"{yourAppClientId}\",\"identity\": {\"user_id\": \"5457edea1b8f22891a000004\",\"provider\": \"google-oauth2\"}, \"organization_id\": \"{yourOrganizationId}\" }"
headers = {
'content-type': "application/json",
'authorization': "Bearer {yourMgmtApiAccessToken}"
}
conn.request("POST", "/{yourDomain}/api/v2/jobs/verification-email", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
Was this helpful?
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://{yourDomain}/api/v2/jobs/verification-email")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["content-type"] = 'application/json'
request["authorization"] = 'Bearer {yourMgmtApiAccessToken}'
request.body = "{ \"user_id\": \"{userIdOfVerifyEmailRecipient}\", \"client_id\": \"{yourAppClientId}\",\"identity\": {\"user_id\": \"5457edea1b8f22891a000004\",\"provider\": \"google-oauth2\"}, \"organization_id\": \"{yourOrganizationId}\" }"
response = http.request(request)
puts response.read_body
Was this helpful?
import Foundation
let headers = [
"content-type": "application/json",
"authorization": "Bearer {yourMgmtApiAccessToken}"
]
let parameters = [
"user_id": "{userIdOfVerifyEmailRecipient}",
"client_id": "{yourAppClientId}",
"identity": [
"user_id": "5457edea1b8f22891a000004",
"provider": "google-oauth2"
],
"organization_id": "{yourOrganizationId}"
] as [String : Any]
let postData = JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(url: NSURL(string: "https://{yourDomain}/api/v2/jobs/verification-email")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
Was this helpful?
En utilisant Règles d'Auth0, vous pouvez appeler votre API lorsqu’un utilisateur se connecte pour la première fois avec une adresse courriel qui n’a pas été vérifiée. Après avoir appelé votre API, ajoutez un drapeau aux métadonnées du profil de l’utilisateur qui indique que le courriel de vérification a été envoyé :
function (user, context, callback) {
const request = require('request');
user.user_metadata = user.user_metadata || {};
if (user.email_verified || user.user_metadata.verification_email_sent) {
return callback(null, user, context);
}
request.post({
url: 'https://yourapi.yourcompany.com/mail/verification',
json: {
user: user,
context: context,
secretToken: configuration.MY_SECRET_TOKEN,
},
timeout: 5000
}, function(err, response, body){
if (err)
return callback(new Error(err));
// Email sent flag persisted in the user's profile.
user.user_metadata.verification_email_sent = true;
auth0.users.updateUserMetadata(user.user_id, user.user_metadata)
.then(function() {
callback(null, user, context);
})
.catch(function(err) {
callback(err);
});
return callback(null, user, context);
});
}
Was this helpful?
Exiger une adresse courriel vérifiée pour la connexion
Vous pouvez demander aux utilisateurs de vérifier leur adresse courriel avant de se connecter avec une règle :
function (user, context, callback) {
if (!user.email_verified) {
return callback(new UnauthorizedError('Please verify your email before logging in.'));
} else {
return callback(null, user, context);
}
}
Was this helpful?
Redirections personnalisées
Une redirection personnalisée est utile lorsque vous souhaitez diriger les utilisateurs vers certaines URL en fonction des attributs de l’utilisateur ou du locataire. L’Auth0 Management API fournit un point de terminaison Créer un ticket de vérification du courriel qui génère le lien de vérification pour chaque utilisateur. Ce point de terminaison vous permet de préciser la result_url
vers lequel les utilisateurs seront redirigés après avoir validé leur adresse courriel en cliquant sur le lien dans le courriel de vérification.
Nous recommandons d’inscrire l’URL sur la liste verte dans Auth0 Dashboard. Pour plus de détails, veuillez consulter Ajouter des adresses à la liste verte.
Courriels de bienvenue
Un courriel de bienvenue est envoyé aux utilisateurs une fois qu’ils ont vérifié leur adresse courriel.
Envoyez un courriel de bienvenue à l’aide de votre propre API
En utilisant une règle, vous pouvez appeler votre API pour envoyer un courriel de bienvenue uniquement si l’adresse courriel de l’utilisateur a été vérifiée et que le courriel n’a pas été envoyé auparavant.
function (user, context, callback) {
const request = require('request');
if (!user.email_verified || user.welcome_email_sent) {
return callback(null, user, context);
}
request.post({
url: 'https://yourapi.yourcompany.com/mail/welcome',
json: {
user: user,
context: context,
secretToken: configuration.MY_SECRET_TOKEN,
},
timeout: 5000
}, function(err, response, body){
if (err)
return callback(new Error(err));
// Email sent flag persisted in the user's profile.
user.app_metadata.welcome_email_sent = true;
return callback(null, user, context);
});
}
Was this helpful?
Courriel de réinitialisation du mot de passe
Vous pouvez créer un ticket de changement de mot de passe à l’aide du point de terminaison de Management API Auth0 Créer un ticket de modification de mot de passe, puis envoyer le ticket de modification de mot de passe dans un courriel à l’utilisateur. Lorsque l’utilisateur clique sur le lien, il sera invité à réinitialiser son mot de passe à partir du flux de connexion universelle.