# Enregistrer une application dans OpenPlatform

> Les champs d’un enregistrement d’application dans OpenPlatform : adresse, les deux jetons partagés, les indicateurs qui décident de son ouverture, ses permissions et qui peut y accéder.

Framework: openplatform
Product: OpenPlatform (openplatform@5)
Language: fr
Content-SHA256: f0c4529df2dbf0a48cd63994c0069a94ec34550243bbf8cbda21fa437c3d7a03
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

Une application est un enregistrement que l’administrateur crée dans l’écran de **configuration** (`/setup/`, l’API des apps du plugin `setup`). L’enregistrement est le contrat entre OpenPlatform et votre application : où elle vit, comment les deux prouvent qui ils sont et ce que l’utilisateur peut y faire. Le schéma de l’enregistrement est `@Apps` dans `plugins/setup/schemas/apps.js`.

| Champ | Obligatoire | Signification |
|---|---|---|
| `name` | oui | le nom affiché dans le portail |
| `url` | oui | l’adresse qu’ouvre OpenPlatform |
| `reqtoken` | oui | un secret que vous choisissez et que **les deux côtés connaissent** : il signe la requête |
| `restoken` | oui | un second secret, lui aussi partagé : l’application l’utilise pour signer sa réponse |
| `color`, `icon` | non | l’aspect de l’application dans le portail |
| `meta` | non | une adresse (URL) qui renvoie les métadonnées de l’application : l’écran de configuration peut la télécharger (`Apps/download`) pour remplir l’enregistrement |
| `sortindex` | non | l’ordre dans la liste (une nouvelle application va à la fin) |
| `notifications` | non | si l’application peut envoyer des notifications |
| `isexternal` | non | l’application n’est **pas** ouverte dans le cadre du portail : la réponse à l’application indique `iframe: false` |
| `isbookmark` | non | l’application est un simple lien : pas d’échange de jetons, seulement un identifiant de session dans la query string |
| `isnewtab` | non | l’ouvrir dans un nouvel onglet du navigateur au lieu du cadre du portail (le réglage `newtab` le fait pour toutes les applications) |
| `isscrollbar` | non | le cadre de l’application dans le portail garde sa barre de défilement (le portail met `scrolling` à `yes` ou `no`) |
| `isdisabled` | non | la désactiver pour tout le monde : l’utilisateur reçoit "App has been temporary disabled" |
| `permissions` | non | la liste des permissions de l’application : chacune a un `id`, un `name` et un `value` (voir [groupes et permissions](/en/openplatform/groups-and-permissions/)) |

La table `tbl_app` a aussi une colonne `allow` ("autorise seulement des adresses IP précises") : quand elle contient des adresses, l’application ne peut appeler les points d’accès du protocole d’OpenPlatform que depuis celles-ci. Le schéma de configuration ci-dessus ne la liste pas ; c’est donc une colonne de la base de données que vous remplissez directement.

## Les deux jetons

`reqtoken` et `restoken` ne sont jamais envoyés au navigateur. OpenPlatform en dérive, pour chaque lancement, les valeurs qui voyagent : le jeton dans l’adresse de l’application et l’en-tête que l’application renvoie. La dérivation est décrite dans [comment une app se connecte](/en/openplatform/how-an-app-connects/). Utilisez de longues valeurs aléatoires et une paire différente pour chaque application.

## Supprimer et modifier

Une application n’est jamais supprimée de la table : la retirer (`Apps/remove`) renseigne `isremoved` et la date du retrait, vide le cache des utilisateurs qui l’avaient, et `isdisabled` la désactive sans la retirer. Quand l’adresse de la plateforme (le réglage `url`) change, OpenPlatform vide les liens de notification de chaque utilisateur et supprime les sessions d’application ouvertes, car les deux contiennent cette adresse ([réglages et base de données](/en/openplatform/settings-and-database/)).

Rappelez-vous la règle du README : une application enregistrée n’est visible de personne tant qu’un groupe ne lui est pas affecté.
