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

# Exemples de cas d’utilisation : actions avec autorisation

> Apprenez à utiliser les actions avec le contrôle d’accès basé sur les rôles (RBAC).

Les [actions](/docs/fr-ca/customize/actions) Auth0 vous permettent de modifier ou de compléter le résultat de la décision prise par une [politique d’autorisation](/docs/fr-ca/manage-users/access-control/authorization-policies) préconfigurée afin que vous puissiez gérer des cas plus compliqués qu’avec le [contrôle d'accès basé sur les rôles (RBAC)](/docs/fr-ca/manage-users/access-control/rbac) seul. En fonction de leur ordre d’exécution, les actions peuvent modifier le résultat d’une décision d’autorisation avant que les autorisations ne soient ajoutées au jeton d’accès. Elles peuvent également vous permettre de personnaliser le contenu de vos jetons.

## Autoriser l’accès uniquement les jours ouvrables pour une application spécifique

Supposons que vous ayez une application que vous souhaitez ne rendre accessible que pendant les jours ouvrables. Allez à[Créer une nouvelle action](/docs/fr-ca/customize/actions/write-your-first-action) et sélectionnez le déclencheur `Connexion/Post-connexion` pour ajouter l’action au flux de connexion. Copiez le code suivant dans l’éditeur de code d’actions :

```javascript lines theme={null}
exports.onExecutePostLogin = async (event, api) => {
  if (event.client.name === "APP_NAME") {
    const d = new Date().getDay();

    if (d === 0 || d === 6) {
      api.access.deny("This app is only available during the week.");
    }
  }
}
```

Enfin, ajoutez l’action que vous avez créée au [Flux de connexion](https://manage.auth0.com/#/actions/flows/login/). Pour savoir comment attacher des actions à des flux, lisez la section « Joindre l’action à un flux » dans [Rédigez votre première action](/docs/fr-ca/customize/actions/write-your-first-action).

Si un utilisateur tente d’accéder à l’application pendant la fin de semaine, l’accès lui sera refusé, même s’il s’authentifie et dispose des privilèges appropriés.

## Autoriser l’accès uniquement aux utilisateurs qui se trouvent à l’intérieur du réseau de l’entreprise

Supposons que vous souhaitiez autoriser l’accès à une application, mais uniquement pour les utilisateurs qui accèdent à l’application depuis le réseau de votre entreprise. Allez à[Créer une nouvelle action](/docs/fr-ca/customize/actions/write-your-first-action) et sélectionnez le déclencheur `Login / Post Login` pour ajouter l’action au flux de connexion. Copiez le code suivant dans l’éditeur de code d’actions :

```javascript lines theme={null}
const ipaddr = require("ipaddr.js");

exports.onExecutePostLogin = async (event, api) => {
  const corpNetwork = "192.168.1.134/26";
  const currentIp = ipaddr.parse(event.request.ip);

  if (!currentIp.match(ipaddr.parseCIDR(corpNetwork))) {
    api.access.deny("This app is only available from inside the corporate network.");
  };
};
```

Enfin, ajoutez l’action que vous avez créée au [Flux de connexion](https://manage.auth0.com/#/actions/flows/login/). Pour savoir comment attacher des actions à des flux, lisez la section « Joindre l’action à un flux » dans [Rédigez votre première action](/docs/fr-ca/customize/actions/write-your-first-action).

Si l’utilisateur se trouve en dehors du réseau de l’entreprise, l’accès lui sera refusé même s’il s’authentifie avec succès et qu’il dispose des privilèges appropriés.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Pour utiliser une bibliothèque `npm` telle que `ipaddr.js`, vous devez ajouter la bibliothèque à l’action en tant que dépendance. Pour en savoir plus, consultez la section « Ajout d’une dépendance » dans [Rédiger votre première action](/docs/fr-ca/customize/actions/write-your-first-action).
</Callout>

## Interdire l’accès à toute personne appelant une API

Supposons que vous souhaitiez refuser l’accès à tous les utilisateurs qui appellent une API. Cela signifie que vous devez refuser l’accès en fonction de la valeur de l’`identifiant` de votre API, que vous pouvez trouver dans le champ **<Tooltip href="/docs/fr-ca/glossary?term=audience" tip="Audience
Identifiant unique de 'audience d’un jeton émis. Appelé aud dans un jeton, sa valeur contient l’identifiant soit d’une application (Client ID) pour un jeton d’ID, soit d’une API (API Identifier) pour un jeton d’accès." cta="Voir le glossaire">Audience</Tooltip> de l’API** de votre API dans [Tableau de bord Auth0 > Applications > API](https://manage.auth0.com/#/apis). Allez à[Créer une nouvelle action](/docs/fr-ca/customize/actions/write-your-first-action) et sélectionnez le déclencheur `Connexion/Post-connexion` pour ajouter l’action au flux de connexion. Copiez le code suivant dans l’éditeur de code d’actions :

```javascript lines theme={null}
exports.onExecutePostLogin = async (event, api) => {
  // In Actions, an API will be referred to as a Resource Server.
  const { identifier } = event.resource_server || {};
  if (identifier === "https://api.example.com") {
    api.access.deny("end_users_not_allowed");
  }
}
```

Enfin, ajoutez l’action que vous avez créée au [Flux de connexion](https://manage.auth0.com/#/actions/flows/login/). Pour savoir comment attacher des actions à des flux, lisez la section « Joindre l’action à un flux » dans [Rédigez votre première action](/docs/fr-ca/customize/actions/write-your-first-action).

Dans ce cas la valeur de l’`identifier` pour l’API est `https://api.example.com`, ce sera donc l'audience que nous allons refuser.

## Ajouter des rôles d’utilisateur aux jetons

Pour ajouter des rôles d’utilisateur aux jetons émis par Auth0, utilisez l’objet `event.authorization` avec les méthodes `api.idToken.setCustomClaim` et `api.accessToken.setCustomClaim`. Allez à[Créer une nouvelle action](/docs/fr-ca/customize/actions/write-your-first-action) et sélectionnez le déclencheur `Login / Post Login` pour ajouter l’action au flux de connexion. Copiez le code suivant dans l’éditeur de code d’actions :

```javascript lines theme={null}
exports.onExecutePostLogin = async (event, api) => {
  const namespace = 'https://my-app.example.com';
  if (event.authorization) {
    api.idToken.setCustomClaim(`${namespace}/roles`, event.authorization.roles);
    api.accessToken.setCustomClaim(`${namespace}/roles`, event.authorization.roles);
  }
}
```

Enfin, ajoutez l’action que vous avez créée au [Flux de connexion](https://manage.auth0.com/#/actions/flows/login/). Pour savoir comment attacher des actions à des flux, lisez la section « Joindre l’action à un flux » dans [Rédigez votre première action](/docs/fr-ca/customize/actions/write-your-first-action).

Rappelez-vous :

* Le <Tooltip href="/docs/fr-ca/glossary?term=json-web-token" tip="Jeton Web JSON (JWT)
  Format standard de jeton d’ID (et souvent de jeton d’accès) utilisé pour représenter en toute sécurité des demandes entre deux parties." cta="Voir le glossaire">JWT</Tooltip> renvoyé à l’application demandeuse est construit et signé à la fin du traitement du déclencheur. Le JWT final signé n’est pas accessible dans une action.
