Passer au contenu principal
Le déclencheur de préinscription utilisateur s’exécute avant qu’un utilisateur soit ajouté à une connexion de base de données ou .
Schéma illustrant le flux de préinscription utilisateur des Actions.
Les Actions de ce flux sont bloquantes (synchrones), ce qui signifie qu’elles s’exécutent dans le cadre du processus d’un déclencheur et empêchent le reste du pipeline Auth0 de s’exécuter tant que l’Action n’est pas terminée.

Déclencheurs

Préinscription de l’utilisateur

Le déclencheur pre-user-registration s’exécute lorsqu’un utilisateur tente de s’inscrire au moyen d’une connexion de base de données ou d’une connexion Passwordless. Ce déclencheur permet d’ajouter des métadonnées au profil de l’utilisateur avant sa création ou de refuser une inscription à l’aide d’une logique personnalisée.
Vous ne pouvez pas, pour le moment, utiliser des Actions pre-user-registration pour ajouter des métadonnées aux utilisateurs Passwordless.

Références

  • Objet d’événement : Fournit des renseignements contextuels sur la demande d’inscription d’un nouvel utilisateur.
  • Objet API : Fournit des méthodes pour modifier le comportement du flux.

Cas d’utilisation courants

Refuser l’inscription en fonction de l’emplacement

Une Action de préinscription peut être utilisée pour empêcher un utilisateur de s’inscrire.
/**
 * @param {Event} event - Détails sur l'événement d'inscription.
 * @param {PreUserRegistrationAPI} api
 */
exports.onExecutePreUserRegistration = async (event, api) => {
  if (event.request.geoip.continentCode === "NA") {

    // localiser le message d'erreur 
    const LOCALIZED_MESSAGES = {
      en: 'You are not allowed to register.',
      es: 'No tienes permitido registrarte.'
    };

    const userMessage = LOCALIZED_MESSAGES[event.request.language] || LOCALIZED_MESSAGES['en'];
    api.access.deny('no_signups_from_north_america', userMessage);
  }
};

Définir des métadonnées dans le profil de l’utilisateur

Une Action de préinscription d’utilisateur peut être utilisée pour ajouter des métadonnées au profil de l’utilisateur avant sa création.
Vous ne pouvez actuellement pas utiliser les Actions pre-user-registration pour ajouter des métadonnées pour des utilisateurs Passwordless.
/**
 * @param {Event} event - Détails sur l'événement d'inscription.
 * @param {PreUserRegistrationAPI} api
 */
exports.onExecutePreUserRegistration = async (event, api) => {
  api.user.setUserMetadata("screen_name", "username");  
};

Enregistrer l’ID d’un utilisateur provenant d’un autre système dans le profil de l’utilisateur

Une Action de préinscription peut être utilisée pour enregistrer l’ID d’un utilisateur provenant d’un autre système dans le profil de l’utilisateur.
const axios = require('axios');

const REQUEST_TIMEOUT = 2000; // Exemple de délai d'attente

/**
* Gestionnaire appelé lors de l'exécution d'un flux PreUserRegistration.
*
* @param {Event} event - Détails sur le contexte et l'utilisateur qui tente de s'inscrire.
* @param {PreUserRegistrationAPI} api - Interface dont les méthodes permettent de modifier le comportement de l'inscription.
*/
exports.onExecutePreUserRegistration = async (event, api) => {
  try {
    // Définir un secret USER_SERVICE_URL = 'https://yourservice.com'
    const remoteUser = await axios.get(event.secrets.USER_SERVICE_URL, {
      timeout: REQUEST_TIMEOUT,
      params: {
        email: event.user.email 
      }
    });

    if (remoteUser) {
      api.user.setAppMetadata('my-api-user-id', remoteUser.id); 
    }
  } catch (err) {
    api.validation.error('custom_error', 'Custom Error');
  }
};
Pour utiliser une bibliothèque npm comme axios, vous devez ajouter cette bibliothèque comme dépendance à l’Action. Pour en savoir plus, consultez la section “Add a dependency” de Write Your First Action.

Refuser l’accès à des empreintes JA3/JA4 spécifiques

L’objet event.security_context contient les valeurs d’empreinte JA3/JA4 pour la transaction en cours.
exports.onExecutePreUserRegistration = async (event, api) => {
  const clientJa4 = event?.security_context?.ja4;
  console.log('[ACTION]', {clientJa4});
  const badFingerprints = ['t13d1517h2_8daaf6152771_b6f405a00624','t13d1516h2_8daaf6152771_d8a2da3f94cd'];
  if (clientJa4 && badFingerprints.includes(clientJa4)){
    api.access.deny('suspicious_tls_fingerprint', 'Your TLS fingerprint has been flagged as suspicious');
  }
};