> ## 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.

> Rédigez du code Actions clair, concis et sécurisé à l’aide de nos directives de codage.

# Directives de codage pour les Actions

Suivez les directives ci-dessous pour rédiger du code Actions performant, sécurisé et clair, afin d’assurer un environnement de production fluide.

<div id="actions-basics">
  ## Principes de base des Actions
</div>

* Utilisez le moins de requêtes HTTP possible et définissez un délai d’expiration raisonnable (moins de 10 secondes) afin d’éviter l’accumulation de requêtes pendant la connexion.
* Utilisez les [métadonnées de l’application](/docs/fr-ca/get-started/applications/configure-application-metadata) pour filtrer des applications précises et déterminer si une Action doit être exécutée.

  * Exemple : valeurs propres à l’application ou valeurs de regroupement d’applications utilisées pour faire varier partiellement ou entièrement l’exécution de l’Action.
* Utilisez `user_metadata`/`app_metadata` pour enregistrer des données personnalisées dans le profil de l’utilisateur.

  * Exemple : préférences de l’utilisateur ou valeurs d’état.
* Utilisez les [métadonnées de transaction](/docs/fr-ca/customize/actions/transaction-metadata) pour partager des données entre les [déclencheurs post-login](/docs/fr-ca/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger) pendant une même exécution.

  * Exemple : valeurs récupérées à partir de services externes ou calculées, qui doivent être réutilisées dans des Actions subséquentes et qui sont liées à l’exécution en cours.
* Utilisez le cache pour les données qui doivent être partagées par des Actions appartenant à différentes exécutions.

  * Exemple : valeurs récupérées à partir de services externes ou calculées, qui doivent être réutilisées par des Actions et qui ne sont liées ni à l’utilisateur ni à l’exécution en cours.
* Assurez-vous que les Actions qui fournissent une vérification ou déclenchent la <Tooltip tip="Authentification multifacteur (MFA) : processus d’authentification de l’utilisateur qui utilise un facteur en plus du nom d’utilisateur et du mot de passe, comme un code par SMS." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=MFA">MFA</Tooltip> ne peuvent pas être contournées, intentionnellement ou de façon malveillante.
* Les Actions ne devraient jamais générer intentionnellement une erreur; si des processus s’arrêtent en raison d’une erreur ou d’une condition, utilisez la méthode `api` appropriée, comme `api.access.deny()`.
* Utilisez `event.request.hostname` pour le domaine utilisé dans les requêtes vers l’Authentication API; il peut s’agir du domaine par défaut du tenant Auth0 ou d’un [domaine personnalisé](/docs/fr-ca/customize/custom-domains).

<Warning>
  Le code des Actions ne doit contenir aucun renseignement personnel identifiable (PII). Ne codez pas en dur, ne stockez pas et ne traitez pas de PII (comme les adresses courriel, les numéros de téléphone ou les noms des utilisateurs) directement dans le code de vos Actions ou Actions Modules. Pour gérer de façon sécuritaire les valeurs de configuration sensibles, utilisez toujours le [Secrets Manager](/docs/fr-ca/customize/actions/write-your-first-action#add-a-secret).
</Warning>

<div id="actions-modules">
  ## Actions Modules
</div>

* Utilisez Actions Modules lorsqu’il faut réutiliser des fonctions dans différentes Actions afin d’éviter la redondance du code.
* Réduisez le temps d’instanciation des objets lorsque c’est possible en appliquant le [patron Singleton](https://en.wikipedia.org/wiki/Singleton_pattern) pour réutiliser des instances d’objet dans l’Action Module.
* Suivez les lignes directrices applicables présentées dans ce document concernant le code, la sécurité, la journalisation, les dépendances et les données utilisateur.
* Lorsque vous utilisez un Action Module dans une Action, tenez toujours compte de la version du module utilisée.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Lorsque vous publiez une nouvelle version d’un Action Module, Auth0 ne met pas automatiquement à jour la version référencée par les Actions, ce qui évite des problèmes potentiels si la mise à niveau n’est pas compatible avec l’Action.
</Callout>

<div id="coding-basics">
  ## Principes de base du codage
</div>

* Vérifiez l’égalité stricte `===` pour toutes les données entrantes ou stockées.
* Utilisez une instruction `return` lorsque le processus Action doit s’arrêter.
* Exécutez un linter, comme [ESLint](https://eslint.org), et un analyseur, comme [Semgrep](https://semgrep.dev/docs/getting-started/), pour améliorer la qualité du code et repérer automatiquement les problèmes.

<div id="security-basics">
  ## Principes de base de la sécurité
</div>

* N’écrivez pas de secrets ni d’artefacts de code sensibles en texte brut dans votre code Actions. Utilisez plutôt le [Secrets Manager](/docs/fr-ca/customize/actions/write-your-first-action#add-a-secret) ou votre propre gestionnaire en l’intégrant au code Actions.
* Ne transmettez pas de renseignements personnels identifiables (PII) non chiffrés en clair, par exemple dans les URL ou les messages d’erreur.
* Utilisez toujours des URL HTTPS pour les redirections et les appels d’API.
* Ajoutez les adresses IP à l’AllowList lorsque c’est possible.
* Soyez attentif aux données entrantes qui peuvent être falsifiées (paramètres d’URL, agent utilisateur, etc.).

<div id="defensive-coding">
  ## Programmation défensive
</div>

* [Interceptez les erreurs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Control_flow_and_error_handling#exception_handling_statements) et gérez-les au besoin.
* Utilisez des clauses de garde et prévoyez un retour immédiat si le traitement de l’Action ne doit pas se poursuivre.

<div id="logging">
  ## Journalisation
</div>

* Ne consignez jamais de données sensibles, de secrets ni de PII.
* Limitez-vous à un maximum de 256 caractères consignés par Action.

<div id="dependencies">
  ## Dépendances
</div>

* Utilisez des paquets de confiance et bien maintenus.
* Vérifiez s’il existe des CVE non corrigées à l’aide de la fonction d’audit de [`npm`](https://docs.npmjs.com/cli/v6/commands/npm-audit) ou d’un vérificateur automatisé de dépendances lié à un dépôt.
* Utilisez la version la plus récente d’un paquet, si possible.

<div id="user-data">
  ## Données utilisateur
</div>

* Vérifiez si une adresse courriel est vérifiée avec `event.user.email_verified` lorsqu’elle est utilisée dans un contexte sensible ou de haute sécurité.
* Les différentes connexions fournissent des données de profil utilisateur différentes; le seul [champ du profil utilisateur](/docs/fr-ca/manage-users/user-accounts/user-profiles/user-profile-structure) garanti est `user_id`.

<div id="redirect-actions-in-the-login-flow">
  ## Redirect Actions dans le flux de connexion
</div>

* Le jeton renvoyé par `api.redirect.encodeToken` est signé, mais non chiffré; les données sensibles ou les PII ne doivent donc pas être incluses dans le payload.
* Le flux de connexion s’exécute après une connexion réussie, notamment dans les cas suivants :

  * SSO (aucun formulaire de connexion n’est affiché)
  * authentification silencieuse (vérification d’une session à l’aide de `prompt=none` dans l’URL d’autorisation)
  * échange de jeton d’actualisation (aucune interaction utilisateur)
  * grants par mot de passe RO (informations d’identification recueillies par une application et échangées avec le point de terminaison des jetons)
* Les Actions qui redirigent doivent tenir compte des cas ci-dessus et soit rejeter l’accès si une interaction est requise, soit permettre intentionnellement le contournement, ce qui transfère la responsabilité à l’application qui demande la connexion.
