

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Déclencheur Lambda Avant l'inscription
<a name="user-pool-lambda-pre-sign-up"></a>

Vous souhaiterez peut-être personnaliser le processus d'inscription dans les groupes d'utilisateurs dotés d'options d'inscription en libre-service. Le déclencheur de pré-inscription est souvent utilisé pour effectuer une analyse personnalisée et un enregistrement des nouveaux utilisateurs, appliquer des normes de sécurité et de gouvernance ou relier les utilisateurs d'un IdP tiers à [un profil utilisateur consolidé](cognito-user-pools-identity-federation-consolidate-users.md). Vous pouvez également avoir des utilisateurs de confiance qui ne sont pas tenus de se soumettre à une [vérification et à une confirmation](signing-up-users-in-your-app.md).

Juste avant qu'Amazon Cognito ne termine la création d'un nouvel utilisateur [local](cognito-terms.md#terms-localuser) ou [fédéré](cognito-terms.md#terms-federateduser), il active la fonction Lambda préalable à l'inscription. L'`userAttributes`objet de demande envoyé à cette fonction contient des attributs qui ont été fournis lors de l'inscription d'un utilisateur local ou qui ont été mappés avec succès à partir des attributs du fournisseur pour un utilisateur fédéré. Votre groupe d'utilisateurs invoque ce déclencheur lors de l'inscription en libre-service [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)ou de la première connexion avec un [fournisseur d'identité](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-federated) fiable, et lors de la création d'un utilisateur avec. [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html) Dans le cadre du processus d'inscription, vous pouvez utiliser cette fonction pour analyser l'événement de connexion avec une logique personnalisée et modifier ou refuser le nouvel utilisateur.

**Topics**
+ [Paramètres du déclencheur Lambda avant l'inscription](#cognito-user-pools-lambda-trigger-syntax-pre-signup)
+ [Exemple d'avant inscription : confirmation automatique d'utilisateurs à partir d'un domaine enregistré](#aws-lambda-triggers-pre-registration-example)
+ [Exemple d'avant inscription : confirmation et vérification automatiques de tous les utilisateurs](#aws-lambda-triggers-pre-registration-example-2)
+ [Exemple de pré-inscription : Refuser l'inscription si le nom d'utilisateur comporte moins de cinq caractères](#aws-lambda-triggers-pre-registration-example-3)

## Paramètres du déclencheur Lambda avant l'inscription
<a name="cognito-user-pools-lambda-trigger-syntax-pre-signup"></a>

La demande qu’Amazon Cognito transmet à cette fonction Lambda est une combinaison des paramètres ci-dessous et des [paramètres courants](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-working-with-lambda-triggers.html#cognito-user-pools-lambda-trigger-syntax-shared) qu’Amazon Cognito ajoute à toutes les demandes.

------
#### [ JSON ]

```
{
    "request": {
        "userAttributes": {
            "string": "string",
            . . .
        },
        "validationData": {
            "string": "string",
            . . .
         },
        "clientMetadata": {
            "string": "string",
            . . .
         }
    },

    "response": {
        "autoConfirmUser": "boolean",
        "autoVerifyPhone": "boolean",
        "autoVerifyEmail": "boolean"
    }
}
```

------

### Paramètres de demande avant l'inscription
<a name="cognito-user-pools-lambda-trigger-syntax-pre-signup-request"></a>

**userAttributes**  
Une ou plusieurs paires nom-valeur représentant des attributs utilisateur. Les noms d'attributs sont les clés.

**validationData**  
Une ou plusieurs paires clé-valeur avec les données d'attribut utilisateur que votre application a transmises à Amazon Cognito dans la demande de création d'un utilisateur. Envoyez ces informations à votre fonction Lambda dans les ValidationData paramètres de votre demande [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html)ou de votre demande d'[SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)API.  
Amazon Cognito ne définit pas vos ValidationData données en tant qu'attributs de l'utilisateur que vous créez. ValidationData sont des informations utilisateur temporaires que vous fournissez aux fins de votre déclencheur Lambda préalable à l'inscription.

**clientMetadata**  
Une ou plusieurs paires clé-valeur que vous pouvez fournir en tant qu'entrée personnalisée pour la fonction Lambda que vous spécifiez pour le déclencheur Avant l'inscription. Vous pouvez transmettre ces données à votre fonction Lambda en utilisant le ClientMetadata paramètre dans les actions d'API suivantes : [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html), [AdminRespondToAuthChallenge[ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html), et. [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)

### Paramètres de réponse avant inscription
<a name="cognito-user-pools-lambda-trigger-syntax-pre-signup-response"></a>

Dans la réponse, vous pouvez définir `autoConfirmUser` sur `true` si vous voulez confirmer automatiquement l'utilisateur. Vous pouvez définir `autoVerifyEmail` sur `true` pour vérifier automatiquement l'e-mail de l'utilisateur. Vous pouvez définir `autoVerifyPhone` sur `true` pour vérifier automatiquement le numéro de téléphone de l'utilisateur.

**Note**  
Les paramètres de réponse `autoVerifyPhone`, `autoVerifyEmail` et `autoConfirmUser` sont ignorés par Amazon Cognito quand l'API `AdminCreateUser` déclenche la fonction Lambda avant l'inscription.

**autoConfirmUser**  
Défini sur `true` pour confirmer automatiquement l'utilisateur, ou sur `false` dans le cas contraire.

**autoVerifyEmail**  
Affectez-lui la valeur `true` pour que l'adresse e-mail d'un utilisateur qui s'inscrit soit définie comme vérifiée, sinon affectez-lui la valeur `false`. Si `autoVerifyEmail` est défini sur `true`, l'attribut `email` doit comporter une valeur valide et non nulle. Dans le cas contraire, une erreur survient et l'utilisateur ne pourra pas finaliser l'inscription.  
Si l'attribut `email` est sélectionné en tant qu'alias, un alias est créé pour l'adresse e-mail de l'utilisateur quand le paramètre `autoVerifyEmail` est défini. S'il existe déjà un alias avec cette adresse e-mail, l'alias est déplacé vers le nouvel utilisateur et l'adresse e-mail de l'utilisateur précédent est marquée comme non vérifiée. Pour de plus amples informations, veuillez consulter [Personnalisation des attributs de connexion](user-pool-settings-attributes.md#user-pool-settings-aliases).

**autoVerifyPhone**  
Définir sur `true` pour que le numéro de téléphone d'un utilisateur qui s'inscrit soit défini comme vérifié, sinon définir sur `false`. Si `autoVerifyPhone` est défini sur `true`, l'attribut `phone_number` doit comporter une valeur valide et non nulle. Dans le cas contraire, une erreur survient et l'utilisateur ne pourra pas finaliser l'inscription.  
Si l'attribut `phone_number` est sélectionné en tant qu'alias, un alias est créé pour le numéro de téléphone de l'utilisateur lorsque le paramètre `autoVerifyPhone` est défini. Si un alias existe déjà avec ce numéro de téléphone, l'alias sera déplacé vers le nouvel utilisateur et le numéro de téléphone de l'utilisateur précédent sera marqué comme non vérifié. Pour de plus amples informations, veuillez consulter [Personnalisation des attributs de connexion](user-pool-settings-attributes.md#user-pool-settings-aliases).

## Exemple d'avant inscription : confirmation automatique d'utilisateurs à partir d'un domaine enregistré
<a name="aws-lambda-triggers-pre-registration-example"></a>

Voici un exemple de code de déclenchement Lambda. Le déclencheur de pré-inscription est invoqué immédiatement avant qu'Amazon Cognito ne traite la demande d'inscription. Il utilise un attribut personnalisé **custom:domain** pour confirmer automatiquement les nouveaux utilisateurs à partir d'un domaine de messagerie en particulier. Tous les nouveaux utilisateurs ne figurant pas dans le domaine personnalisé seront ajoutés au groupe d'utilisateurs, mais ne seront pas automatiquement confirmés.

------
#### [ Node.js ]

```
export const handler = async (event, context, callback) => {
  // Set the user pool autoConfirmUser flag after validating the email domain
  event.response.autoConfirmUser = false;

  // Split the email address so we can compare domains
  var address = event.request.userAttributes.email.split("@");

  // This example uses a custom attribute "custom:domain"
  if (event.request.userAttributes.hasOwnProperty("custom:domain")) {
    if (event.request.userAttributes["custom:domain"] === address[1]) {
      event.response.autoConfirmUser = true;
    }
  }

  // Return to Amazon Cognito
  callback(null, event);
};
```

------
#### [ Python ]

```
def lambda_handler(event, context):
    # It sets the user pool autoConfirmUser flag after validating the email domain
    event['response']['autoConfirmUser'] = False

    # Split the email address so we can compare domains
    address = event['request']['userAttributes']['email'].split('@')

    # This example uses a custom attribute 'custom:domain'
    if 'custom:domain' in event['request']['userAttributes']:
        if event['request']['userAttributes']['custom:domain'] == address[1]:
            event['response']['autoConfirmUser'] = True

    # Return to Amazon Cognito
    return event
```

------

Amazon Cognito transmet les informations d’événement à votre fonction Lambda. Cette fonction renvoie alors le même objet d’événement à Amazon Cognito, avec d’éventuelles modifications dans la réponse. Dans la console Lambda, vous pouvez configurer un événement de test avec des données pertinentes pour votre déclencheur Lambda. Voici un événement de test pour cet exemple de code :

------
#### [ JSON ]

```
{
    "request": {
        "userAttributes": {
            "email": "testuser@example.com",
            "custom:domain": "example.com"
        }
    },
    "response": {}
}
```

------

## Exemple d'avant inscription : confirmation et vérification automatiques de tous les utilisateurs
<a name="aws-lambda-triggers-pre-registration-example-2"></a>

Cet exemple confirme tous les utilisateurs et définit les attributs `email` et `phone_number` sur « verified » si l'attribut est présent. De même, si l'option d'attribution d'un alias est activée, des alias sont créés pour `phone_number` et `email` lorsque la vérification automatique est définie. 

**Note**  
S'il existe déjà un alias avec ce numéro de téléphone, l'alias est déplacé vers le nouvel utilisateur et l'attribut `phone_number` de l'utilisateur précédent est marqué comme non vérifié. Il en va de même pour les adresses e-mail. Pour éviter cela, vous pouvez utiliser l'[ListUsers API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html) des groupes d'utilisateurs pour voir s'il existe un utilisateur existant qui utilise déjà le numéro de téléphone ou l'adresse e-mail du nouvel utilisateur comme alias.

------
#### [ Node.js ]

```
exports.handler = (event, context, callback) => {
  // Confirm the user
  event.response.autoConfirmUser = true;

  // Set the email as verified if it is in the request
  if (event.request.userAttributes.hasOwnProperty("email")) {
    event.response.autoVerifyEmail = true;
  }

  // Set the phone number as verified if it is in the request
  if (event.request.userAttributes.hasOwnProperty("phone_number")) {
    event.response.autoVerifyPhone = true;
  }

  // Return to Amazon Cognito
  callback(null, event);
};
```

------
#### [ Python ]

```
def lambda_handler(event, context):
    # Confirm the user
    event['response']['autoConfirmUser'] = True

    # Set the email as verified if it is in the request
    if 'email' in event['request']['userAttributes']:
        event['response']['autoVerifyEmail'] = True

    # Set the phone number as verified if it is in the request
    if 'phone_number' in event['request']['userAttributes']:
        event['response']['autoVerifyPhone'] = True

    # Return to Amazon Cognito
    return event
```

------

Amazon Cognito transmet les informations d’événement à votre fonction Lambda. Cette fonction renvoie alors le même objet d’événement à Amazon Cognito, avec d’éventuelles modifications dans la réponse. Dans la console Lambda, vous pouvez configurer un événement de test avec des données pertinentes pour votre déclencheur Lambda. Voici un événement de test pour cet exemple de code :

------
#### [ JSON ]

```
{
  "request": {
    "userAttributes": {
      "email": "user@example.com",
      "phone_number": "+12065550100"
    }
  },
  "response": {}
}
```

------

## Exemple de pré-inscription : Refuser l'inscription si le nom d'utilisateur comporte moins de cinq caractères
<a name="aws-lambda-triggers-pre-registration-example-3"></a>

Cet exemple vérifie la longueur du nom d'utilisateur dans une demande d'inscription. L'exemple renvoie une erreur si l'utilisateur a saisi un nom de moins de cinq caractères.

------
#### [ Node.js ]

```
export const handler = (event, context, callback) => {
    // Impose a condition that the minimum length of the username is 5 is imposed on all user pools.
    if (event.userName.length < 5) {
        var error = new Error("Cannot register users with username less than the minimum length of 5");
        // Return error to Amazon Cognito
        callback(error, event);
    }
    // Return to Amazon Cognito
    callback(null, event);
};
```

------
#### [ Python ]

```
def lambda_handler(event, context):
    if len(event['userName']) < 5:
        raise Exception("Cannot register users with username less than the minimum length of 5")
    # Return to Amazon Cognito
    return event
```

------

Amazon Cognito transmet les informations d’événement à votre fonction Lambda. Cette fonction renvoie alors le même objet d’événement à Amazon Cognito, avec d’éventuelles modifications dans la réponse. Dans la console Lambda, vous pouvez configurer un événement de test avec des données pertinentes pour votre déclencheur Lambda. Voici un événement de test pour cet exemple de code :

------
#### [ JSON ]

```
{
  "userName": "rroe",
  "response": {}
}
```

------