> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Comment tester les connexions de base de données personnalisées

> Décrit comment tester vos connexions de base de données personnalisées.

Vous pouvez utiliser le Auth0 Dashboard pour tester une connexion de base de données personnalisée en authentifiant les utilisateurs dans le même tenant ou dans un tenant distinct.

Que vous ayez ou non [activé l’importation d’utilisateurs](/docs/fr-ca/manage-users/user-migration/configure-automatic-migration-from-your-database) depuis votre magasin d’utilisateurs, commencez par créer un tenant et une application de test.

<div id="create-a-test-tenant-and-application">
  ## Créez un tenant et une application de test
</div>

1. [Créez un nouveau tenant](/docs/fr-ca/get-started/auth0-overview/create-tenants) pour l’utiliser à des fins de test.

2. [Créez une application Machine-to-Machine](https://manage.auth0.com/#/applications/applications/create).

   Vous avez besoin du Client ID et du secret de l’application pour activer les scopes dans Management API et créer des scripts d’action de base de données personnalisés.

3. Activez les grants **Password** et **Client Credential** pour cette application.

   <Frame>
     <img src="https://mintcdn.com/translations/pvjQqAy3EB2TK6NP/docs/images/cdy7uua7fh8z/4caAveuhYurCDb5F8mdImm/38496efe6f670d828542b02a56e5ca64/Grant_Types_-_English.png?fit=max&auto=format&n=pvjQqAy3EB2TK6NP&q=85&s=0ebd711995e18f1136dab6cb1b4c78be" alt="Auth0 Dashboard > Applications > Paramètres avancés" data-og-width="1602" width="1602" data-og-height="794" height="794" data-path="docs/images/cdy7uua7fh8z/4caAveuhYurCDb5F8mdImm/38496efe6f670d828542b02a56e5ca64/Grant_Types_-_English.png" data-optimize="true" data-opv="3" srcset="https://mintcdn.com/translations/pvjQqAy3EB2TK6NP/docs/images/cdy7uua7fh8z/4caAveuhYurCDb5F8mdImm/38496efe6f670d828542b02a56e5ca64/Grant_Types_-_English.png?w=280&fit=max&auto=format&n=pvjQqAy3EB2TK6NP&q=85&s=929083f5c8cace053bf64e790fd07f12 280w, https://mintcdn.com/translations/pvjQqAy3EB2TK6NP/docs/images/cdy7uua7fh8z/4caAveuhYurCDb5F8mdImm/38496efe6f670d828542b02a56e5ca64/Grant_Types_-_English.png?w=560&fit=max&auto=format&n=pvjQqAy3EB2TK6NP&q=85&s=8a9d0dcf81366ea177f0067c9bcf4e9e 560w, https://mintcdn.com/translations/pvjQqAy3EB2TK6NP/docs/images/cdy7uua7fh8z/4caAveuhYurCDb5F8mdImm/38496efe6f670d828542b02a56e5ca64/Grant_Types_-_English.png?w=840&fit=max&auto=format&n=pvjQqAy3EB2TK6NP&q=85&s=5a1181ef297ea777a38ee01a1553ccd7 840w, https://mintcdn.com/translations/pvjQqAy3EB2TK6NP/docs/images/cdy7uua7fh8z/4caAveuhYurCDb5F8mdImm/38496efe6f670d828542b02a56e5ca64/Grant_Types_-_English.png?w=1100&fit=max&auto=format&n=pvjQqAy3EB2TK6NP&q=85&s=64bebc89ee9eeb3a4dcd82289b446f34 1100w, https://mintcdn.com/translations/pvjQqAy3EB2TK6NP/docs/images/cdy7uua7fh8z/4caAveuhYurCDb5F8mdImm/38496efe6f670d828542b02a56e5ca64/Grant_Types_-_English.png?w=1650&fit=max&auto=format&n=pvjQqAy3EB2TK6NP&q=85&s=7bff613937f0e2128c19af41c0df54ad 1650w, https://mintcdn.com/translations/pvjQqAy3EB2TK6NP/docs/images/cdy7uua7fh8z/4caAveuhYurCDb5F8mdImm/38496efe6f670d828542b02a56e5ca64/Grant_Types_-_English.png?w=2500&fit=max&auto=format&n=pvjQqAy3EB2TK6NP&q=85&s=0b3caa889661bafaa2e948e38f9075c6 2500w" />
   </Frame>

4. Pour autoriser votre application, accédez à [Applications > APIs](https://manage.auth0.com/#/apis) et sélectionnez **Management API**.

5. Sous l'onglet **Machine-to-Machine Applications**, utilisez la bascule pour autoriser votre application de test.

6. Sélectionnez le menu déroulant pour activer les scopes suivants de l’Auth0 Management API :

   * `read:users`
   * `update:users`
   * `delete:users`
   * `create:users`
   * `read:users_app_metadata`
   * `update:users_app_metadata`
   * `create:users_app_metadata`

<div id="test-with-import-users-to-auth0-enabled">
  ## Tester avec l’importation d’utilisateurs vers Auth0 activée
</div>

Pour tester une connexion de base de données personnalisée avec [l’importation d’utilisateurs vers Auth0 activée](/docs/fr-ca/manage-users/user-migration/configure-automatic-migration-from-your-database), créez d’abord un tenant et une application, puis une connexion de base de données source et une connexion de base de données cible.

1. Dans [**Dashboard > Authentication > Database**](https://manage.auth0.com/#/connections/database), créez deux connexions de base de données (l’une comme source et l’autre comme cible) avec **Required Username** activé. Si vous souhaitez tester avec Organizations, activez **Context object in database scripts**.

   <Tip>
     Vous pouvez définir la **Password Policy** sur **Non-empty password required** dans les bases de données source et cible afin d’utiliser des mots de passe simples lors de vos tests.
   </Tip>

2. Créez des utilisateurs de test dans votre connexion de base de données source. Dans [**Dashboard > User Management > Users**](https://manage.auth0.com/#/users), sélectionnez \*\*+Create User > **Create via UI**.

   Dans la fenêtre **Create user** qui s’ouvre, sous **Connection**, choisissez votre connexion de base de données source. Remplissez les champs requis, puis sélectionnez **Create** (ou **Create Another**).

3. Configurez la connexion de base de données cible :

   * Dans l’onglet **Custom Database**, activez la bascule **Use my own database**.

   * Dans l’onglet **Settings**, activez **Import Users to Auth0**.

   * Dans l’onglet **Custom Database**, dans la section **Database settings**, ajoutez les renseignements suivants provenant de la connexion de base de données source :

     | Clé               | Valeur                                                                    |
     | ----------------- | ------------------------------------------------------------------------- |
     | `client_id`       | Client ID de l’application que vous avez créée.                           |
     | `client_secret`   | Client Secret de l’application que vous avez créée.                       |
     | `auth0_domain`    | Le nom de votre tenant dans le domaine Auth0 : `yourTenant.us.auth0.com`. |
     | `source_database` | Nom de la connexion source.                                               |

4. Mettez à jour les scripts d’action de base de données [Login](/docs/fr-ca/authenticate/database-connections/custom-db/templates/login) et [Get User](/docs/fr-ca/authenticate/database-connections/custom-db/templates/get-user) dans votre base de données cible.

5. Sélectionnez **Save and Try** pour chaque script. Surveillez la sortie `console.log` dans [Actions Real-time Logs](/docs/fr-ca/customize/actions/actions-real-time-logs).

6. Sélectionnez **Try Connection** pour tester la connexion en temps réel.

<div id="test-with-import-users-to-auth0-disabled">
  ## Tester avec l’importation d’utilisateurs vers Auth0 désactivée
</div>

Pour tester une connexion de base de données personnalisée avec l’importation d’utilisateurs vers Auth0 désactivée, après avoir créé un tenant et une application, créez une connexion de base de données source et une connexion de base de données cible.

1. Dans [**Dashboard > Authentication > Database**](https://manage.auth0.com/#/connections/database), créez une connexion de base de données de test qui servira de cible.

2. Mettez à jour les scripts d’action de base de données à l’aide des exemples ci-dessous.

   <Tabs>
     <Tab title="Obtenir l’utilisateur">
       Mettez à jour le [script Get User](/docs/fr-ca/authenticate/database-connections/custom-db/templates/get-user) avec l’exemple suivant :

       ```js lines expandable theme={null}
       async function getUser(user, context, callback) {
           log(`Script started.`);
           log(`Requesting an Access Token from "${configuration.auth0_domain}".`);
           let accessToken = await getAccessToken();
           accessToken = accessToken.access_token;
           if (!accessToken) return log(`Failed to get an Access Token from "${configuration.auth0_domain}".`, true);
           log(`The Access Token is available. Searching for user "${user}" in "${configuration.source_database}"`);
           user = user.toLowerCase();
           const searchQuery = encodeURI(`identities.connection:"${configuration.source_database}"+AND+(email:${user} OR username:${user})`);
           var options = {
               method: `GET`,
               url: `https://${configuration.auth0_domain}/api/v2/users?q=${searchQuery}`,
               headers: {
                   Authorization: `Bearer ${accessToken}`,
               }
           };
           request(options, function (error, response) {
               if (error) return log(`Cannot connect to "${configuration.source_database}" database.`, true);
               let search_results = JSON.parse(response.body);
               let profile = null;
               if (search_results.length > 0) {
                   log(`A user "${user}" is FOUND in "${configuration.source_database}" database.`);
                   profile = {
                       user_id: search_results[0].user_id.toString(),
                       nickname: search_results[0].nickname,
                       username: search_results[0].username,
                       email: search_results[0].email
                   };
               } else {
                   log(`A user "${user}" is NOT FOUND in "${configuration.source_database}" database.`);
               }
               log(`Script completed!`);
               return callback(null, profile);
           });
           /* -- OBTENIR UN JETON D'ACCÈS VIA LES IDENTIFIANTS CLIENT -- */
           async function getAccessToken() {
               var options = {
                   method: `POST`,
                   url: `https://${configuration.auth0_domain}/oauth/token`,
                   headers: {
                       "Content-Type": `application/x-www-form-urlencoded`,
                   },
                   form: {
                       grant_type: `client_credentials`,
                       client_id: configuration.client_id,
                       client_secret: configuration.client_secret,
                       audience: `https://${configuration.auth0_domain}/api/v2/`
                   },
                   json: true
               };
               return new Promise(function (resolve) {
                   request(options, function (error, response) {
                       resolve(error || response.body);
                   });
               });
           }
           /* -- JOURNALISATION -- */
           function log(message, error = false) {
               const script_name = `GET USER`;
               const error_label = error ? `(ERROR)` : ``;
               const return_message = `${script_name}: ${error_label} ${message}`;
               console.log(return_message);
               if (error) return callback(new Error(return_message));
           }
       }
       ```
     </Tab>

     <Tab title="Login">
       Mettez à jour le [script de connexion](/docs/fr-ca/authenticate/database-connections/custom-db/templates/login) avec l’exemple suivant :

       ```javascript lines expandable theme={null}
       function login(usernameOrEmail, password, context, callback) {
         log(`Script started.`);
         const jwt = require('jsonwebtoken');
         const options = {
           method: `POST`,
           url: `https://${configuration.auth0_domain}/oauth/token`,
           headers: { "Content-Type": `application/x-www-form-urlencoded` },
           json: true,
           form: {
             grant_type: `http://auth0.com/oauth/grant-type/password-realm`,
             client_id: configuration.client_id,
             client_secret: configuration.client_secret,
             username: usernameOrEmail,
             password: password,
             realm: `${configuration.source_database}`
           }
         };
         request(options, function (error, response, body) {
           log(`Attempting to authenticate a user "${usernameOrEmail}" against "${configuration.source_database}" database in "${configuration.auth0_domain}" tenant.`);
           if (error) return log(`Cannot connect to "${configuration.auth0_domain}" database.`, true);
           if (response.statusCode !== 200) {
             console.log(`LOGIN: (ERROR) ${response.body.error_description}`);
             return callback(new WrongUsernameOrPasswordError(usernameOrEmail, `LOGIN: (ERROR) ${response.body.error_description}`));
           }
           log(`Successfuly authenticated user "${usernameOrEmail}" against "${configuration.source_database}" database in "${configuration.auth0_domain}" tenant.`);
           const decoded_id_token = jwt.decode(body.id_token);
           const profile = {
             user_id: decoded_id_token.sub,
             nickname: decoded_id_token.nickname,
             username: decoded_id_token.username,
             email: decoded_id_token.email
           };
           log(`Script completed.`);
           return callback(null, profile);
         });
         /* -- JOURNALISATION -- */
         function log(message, error = false) {
           const script_name = `LOGIN`;
           const error_label = error ? `(ERROR)` : ``;
           const return_message = `${script_name}: ${error_label} ${message}`;
           console.log(return_message);
           if (error) return callback(new Error(return_message));
         }
       }
       ```
     </Tab>

     <Tab title="Créer">
       Mettez à jour le [script Create](/docs/fr-ca/authenticate/database-connections/custom-db/templates/create) en utilisant l’exemple suivant :

       ```js lines expandable theme={null}
       async function create(user, context, callback) {
         log(`Script started.`);
         log(`Requesting an Access Token from "${configuration.auth0_domain}".`);
         let accessToken = await getAccessToken();
         if (!accessToken.access_token) return log(`Failed to get an Access Token from "${configuration.auth0_domain}".`, true);
         accessToken = accessToken.access_token;
         log(`The Access Token is available. Attempting to create a user "${user.email}" in "${configuration.source_database}"`);
         const options = {
           method: `POST`,
           url: `https://${configuration.auth0_domain}/api/v2/users`,
           headers: {
             Authorization: `Bearer ${accessToken}`,
             "Content-Type": `application/x-www-form-urlencoded`
           },
           form: {
             connection: configuration.source_database,
             email: user.email,
             password: user.password,
             username: user.username
           },
           json: true
         };
         request(options, function (error, response) {
           if (error) return log(`Cannot connect to "${configuration.source_database}" database.`, true);
           switch (response.statusCode) {
             case 201:
               log(`The user "${user.email}" is successfuly created in "${configuration.source_database}" database.`);
               return callback(null);
             case 409:
               return callback(new ValidationError(`user_exists`, `The user already exists in "${configuration.source_database}" database.`));
             default:
               return log(`Failed to create a user "${user.email}" in "${configuration.source_database}" database. Error: "${response.statusCode}, ${response.body.message}"`, true);
           }
         });
         /* -- OBTENIR UN JETON D'ACCÈS VIA LES IDENTIFIANTS CLIENT -- */
         async function getAccessToken() {
           var options = {
             method: `POST`,
             url: `https://${configuration.auth0_domain}/oauth/token`,
             headers: {
               "Content-Type": `application/x-www-form-urlencoded`,
             },
             form: {
               grant_type: `client_credentials`,
               client_id: configuration.client_id,
               client_secret: configuration.client_secret,
               audience: `https://${configuration.auth0_domain}/api/v2/`
             },
             json: true
           };
           return new Promise(function (resolve) {
             request(options, function (error, response) {
               resolve(error || response.body);
             });
           });
         }
         /* -- JOURNALISATION -- */
         function log(message, error = false) {
           const script_name = `CREATE`;
           const error_label = error ? `(ERROR)` : ``;
           const return_message = `${script_name}: ${error_label} ${message}`;
           console.log(return_message);
           if (error) return callback(new Error(return_message));
         }
       }
       ```
     </Tab>

     <Tab title="Supprimer">
       Mettez à jour le [script Delete](/docs/fr-ca/authenticate/database-connections/custom-db/templates/delete) avec l’exemple suivant :

       ```js lines expandable theme={null}
       async function deleteUser(user, context, callback) {
         log(`Script started.`);
         log(`Requesting an Access Token from "${configuration.auth0_domain}".`);
         let accessToken = await getAccessToken();
         if (!accessToken.access_token) return log(`Failed to get an Access Token from "${configuration.auth0_domain}".`, true);
         accessToken = accessToken.access_token;
         log(`The Access Token is available. Attempting to delete a user "${user}" from "${configuration.source_database}"`);
         const options = {
           method: `DELETE`,
           url: `https://${configuration.auth0_domain}/api/v2/users/${user}`,
           headers: {
             Authorization: `Bearer ${accessToken}`,
             "Content-Type": `application/x-www-form-urlencoded`
           },
           json: true
         };
         request(options, function (error, response) {
           if (error) return log(`Cannot connect to "${configuration.source_database}" database.`, true);
           switch (response.statusCode) {
             case 204:
               log(`The user "${user}" is successfuly deleted from "${configuration.source_database}" database.`);
               return callback(null);
             default:
               return log(`Failed to delete a user "${user}" from "${configuration.source_database}" database. Error: "${response.statusCode}, ${response.body.message}"`, true);
           }
         });
         /* -- OBTENIR UN JETON D'ACCÈS VIA LES IDENTIFIANTS CLIENT -- */
         async function getAccessToken() {
           var options = {
             method: `POST`,
             url: `https://${configuration.auth0_domain}/oauth/token`,
             headers: {
               "Content-Type": `application/x-www-form-urlencoded`,
             },
             form: {
               grant_type: `client_credentials`,
               client_id: configuration.client_id,
               client_secret: configuration.client_secret,
               audience: `https://${configuration.auth0_domain}/api/v2/`
             },
             json: true
           };
           return new Promise(function (resolve) {
             request(options, function (error, response) {
               resolve(error || response.body);
             });
           });
         }
         /* -- JOURNALISATION -- */
         function log(message, error = false) {
           const script_name = `DELETE`;
           const error_label = error ? `(ERROR)` : ``;
           const return_message = `${script_name}: ${error_label} ${message}`;
           console.log(return_message);
           if (error) return callback(new Error(return_message));
         }
       }
       ```
     </Tab>

     <Tab title="Verify">
       Mettez à jour le [script Verify](/docs/fr-ca/authenticate/database-connections/custom-db/templates/verify) selon l’exemple suivant :

       ```js lines expandable theme={null}
       async function verify(user, context, callback) {
         log(`Script started.`);
         log(`Requesting an Access Token from "${configuration.auth0_domain}".`);
         let accessToken = await getAccessToken();
         if (!accessToken.access_token) return log(`Failed to get an Access Token from "${configuration.auth0_domain}".`, true);
         accessToken = accessToken.access_token;
         log(`The Access Token is available. Searching for user "${user}" in "${configuration.source_database}"`);
         user = user.toLowerCase();
         const searchQuery = encodeURI(`identities.connection:"${configuration.source_database}"+AND+(email:${user} OR username:${user})`);
         var options = {
           method: `GET`,
           url: `https://${configuration.auth0_domain}/api/v2/users?q=${searchQuery}`,
           headers: {
             Authorization: `Bearer ${accessToken}`,
           }
         };
         request(options, function (error, response) {
           if (error) return log(`Cannot connect to "${configuration.source_database}" database.`, true);
           let search_results = JSON.parse(response.body);
           if (search_results.length > 0) {
             log(`A user "${user}" is found in "${configuration.source_database}" database.`);
             const user_id = search_results[0].user_id.toString();
             log(`Attempting to mark user "${user_id}" as verified in "${configuration.source_database}" database`);
             const options = {
               method: `PATCH`,
               url: `https://${configuration.auth0_domain}/api/v2/users/${user_id}`,
               headers: {
                 Authorization: `Bearer ${accessToken}`,
                 "Content-Type": `application/x-www-form-urlencoded`
               },
               form: {
                 email_verified: true,
               },
               json: true
             };
             request(options, function (error, response) {
               if (error) return log(`Cannot connect to "${configuration.source_database}" database.`, true);
               switch (response.statusCode) {
                 case 200:
                   log(`The user "${user}" is marked as verified in "${configuration.source_database}" database.`);
                   return callback(null, true);
                 default:
                   return log(`Failed to mark a user "${user}" as verified in "${configuration.source_database}" database. Error: "${response.statusCode}, ${response.body.message}"`, true);
               }
             });
           } else {
             log(`A user "${user}" is not found in "${configuration.source_database}" database. Unable to verify.`, true);
           }
         });
         /* -- OBTENIR UN JETON D'ACCÈS VIA LES IDENTIFIANTS CLIENT -- */
         async function getAccessToken() {
           var options = {
             method: `POST`,
             url: `https://${configuration.auth0_domain}/oauth/token`,
             headers: {
               "Content-Type": `application/x-www-form-urlencoded`,
             },
             form: {
               grant_type: `client_credentials`,
               client_id: configuration.client_id,
               client_secret: configuration.client_secret,
               audience: `https://${configuration.auth0_domain}/api/v2/`
             },
             json: true
           };
           return new Promise(function (resolve) {
             request(options, function (error, response) {
               resolve(error || response.body);
             });
           });
         }
         /* -- JOURNALISATION -- */
         function log(message, error = false) {
           const script_name = `VERIFY`;
           const error_label = error ? `(ERROR)` : ``;
           const return_message = `${script_name}: ${error_label} ${message}`;
           console.log(return_message);
           if (error) return callback(new Error(return_message));
         }
       }
       ```
     </Tab>

     <Tab title="Modifier le mot de passe">
       Mettez à jour le [script Change Password](/docs/fr-ca/authenticate/database-connections/custom-db/templates/change-password) avec l’exemple suivant :

       ```js lines expandable theme={null}
       async function changePassword(user, newPassword, context, callback) {
         log(`Script started.`);
         log(`Requesting an Access Token from "${configuration.auth0_domain}".`);
         let accessToken = await getAccessToken();
         if (!accessToken.access_token) return log(`Failed to get an Access Token from "${configuration.auth0_domain}".`, true);
         accessToken = accessToken.access_token;
         log(`The Access Token is available. Searching for user "${user}" in "${configuration.source_database}" database.`);
         user = user.toLowerCase();
         const searchQuery = encodeURI(`identities.connection:"${configuration.source_database}"+AND+(email:${user} OR username:${user})`);
         var options = {
           method: `GET`,
           url: `https://${configuration.auth0_domain}/api/v2/users?q=${searchQuery}`,
           headers: {
             Authorization: `Bearer ${accessToken}`,
           }
         };
         request(options, function (error, response) {
           if (error) return log(`Cannot connect to "${configuration.source_database}" database.`, true);
           let search_results = JSON.parse(response.body);
           if (search_results.length > 0) {
             log(`A user "${user}" is found in "${configuration.source_database}" database.`);
             const user_id = search_results[0].user_id.toString();
             log(`Attempting to change password for user "${user_id}" in "${configuration.source_database}" database.`);
             const options = {
               method: `PATCH`,
               url: `https://${configuration.auth0_domain}/api/v2/users/${user_id}`,
               headers: {
                 Authorization: `Bearer ${accessToken}`,
                 "Content-Type": `application/x-www-form-urlencoded`
               },
               form: {
                 password: newPassword,
               },
               json: true
             };
             request(options, function (error, response) {
               if (error) return log(`Cannot connect to "${configuration.source_database}" database.`, true);
               switch (response.statusCode) {
                 case 200:
                   log(`The user "${user}" password successfully changed in "${configuration.source_database}" database.`);
                   return callback(null, true);
                 default:
                   return log(`Failed to change password for "${user}"  in "${configuration.source_database}" database. Error: "${response.statusCode}, ${response.body.message}"`, true);
               }
             });
           } else {
             log(`A user "${user}" is not found in "${configuration.source_database}" database. Unable to change password.`, true);
           }
         });
         /* -- OBTENIR UN JETON D'ACCÈS VIA LES IDENTIFIANTS CLIENT -- */
         async function getAccessToken() {
           var options = {
             method: `POST`,
             url: `https://${configuration.auth0_domain}/oauth/token`,
             headers: {
               "Content-Type": `application/x-www-form-urlencoded`,
             },
             form: {
               grant_type: `client_credentials`,
               client_id: configuration.client_id,
               client_secret: configuration.client_secret,
               audience: `https://${configuration.auth0_domain}/api/v2/`
             },
             json: true
           };
           return new Promise(function (resolve) {
             request(options, function (error, response) {
               resolve(error || response.body);
             });
           });
         }
         /* -- JOURNALISATION -- */
         function log(message, error = false) {
           const script_name = `CHANGE PASSWORD`;
           const error_label = error ? `(ERROR)` : ``;
           const return_message = `${script_name}: ${error_label} ${message}`;
           console.log(return_message);
           if (error) return callback(new Error(return_message));
         }
       }
       ```
     </Tab>

     <Tab title="Modifier l’adresse courriel">
       Mettez à jour le [script Change Email](/docs/fr-ca/authenticate/database-connections/custom-db/templates/change-email) à l’aide de l’exemple suivant :

       ```js lines expandable theme={null}
       async function changeEmail(user, newEmail, verified, callback) {
         log(`Script started.`);
         log(`Requesting an Access Token from "${configuration.auth0_domain}".`);
         let accessToken = await getAccessToken();
         if (!accessToken.access_token) return log(`Failed to get an Access Token from "${configuration.auth0_domain}".`, true);
         accessToken = accessToken.access_token;
         log(`The Access Token is available. Searching for user "${user}" in "${configuration.source_database}" database.`);
         user = user.toLowerCase();
         const searchQuery = encodeURI(`identities.connection:"${configuration.source_database}"+AND+(email:${user} OR username:${user})`);
         var options = {
           method: `GET`,
           url: `https://${configuration.auth0_domain}/api/v2/users?q=${searchQuery}`,
           headers: {
             Authorization: `Bearer ${accessToken}`,
           }
         };
         request(options, function (error, response) {
           if (error) return log(`Cannot connect to "${configuration.source_database}" database.`, true);
           let search_results = JSON.parse(response.body);
           if (search_results.length > 0) {
             log(`A user "${user}" is found in "${configuration.source_database}" database.`);
             const user_id = search_results[0].user_id.toString();
             log(`Attempting to change email / verified status for user "${user_id}" in "${configuration.source_database}" database.`);
             const options = {
               method: `PATCH`,
               url: `https://${configuration.auth0_domain}/api/v2/users/${user_id}`,
               headers: {
                 Authorization: `Bearer ${accessToken}`,
                 "Content-Type": `application/x-www-form-urlencoded`
               },
               form: {
                 email: newEmail,
                 email_verified: verified || false
               },
               json: true
             };
             request(options, function (error, response) {
               if (error) return log(`Cannot connect to "${configuration.source_database}" database.`, true);
               switch (response.statusCode) {
                 case 200:
                   log(`The user "${user}" email / verified status successfully changed in "${configuration.source_database}" database.`);
                   return callback(null, true);
                 default:
                   return log(`Failed to change email / verified status for "${user}"  in "${configuration.source_database}" database. Error: "${response.statusCode}, ${response.body.message}"`, true);
               }
             });
           } else {
             log(`A user "${user}" is not found in "${configuration.source_database}" database. Unable to change email / verified status.`, true);
           }
         });
         /* -- OBTENIR UN JETON D'ACCÈS VIA LES IDENTIFIANTS CLIENT -- */
         async function getAccessToken() {
           var options = {
             method: `POST`,
             url: `https://${configuration.auth0_domain}/oauth/token`,
             headers: {
               "Content-Type": `application/x-www-form-urlencoded`,
             },
             form: {
               grant_type: `client_credentials`,
               client_id: configuration.client_id,
               client_secret: configuration.client_secret,
               audience: `https://${configuration.auth0_domain}/api/v2/`
             },
             json: true
           };
           return new Promise(function (resolve) {
             request(options, function (error, response) {
               resolve(error || response.body);
             });
           });
         }
         /* -- JOURNALISATION -- */
         function log(message, error = false) {
           const script_name = `CHANGE EMAIL`;
           const error_label = error ? `(ERROR)` : ``;
           const return_message = `${script_name}: ${error_label} ${message}`;
           console.log(return_message);
           if (error) return callback(new Error(return_message));
         }
       }
       ```
     </Tab>
   </Tabs>

3. Sélectionnez **Enregistrer et essayer** pour chaque script. Surveillez la sortie `console.log` dans les [journaux en temps réel d’Actions](/docs/fr-ca/customize/actions/actions-real-time-logs).

4. Sélectionnez **Essayer la connexion** pour tester la connexion en temps réel.
