# Een toepassing registreren in OpenPlatform

> De velden van een toepassingsrecord in OpenPlatform: adres, de twee gedeelde tokens, de vlaggen die bepalen hoe ze opent, haar rechten en wie erbij kan.

Framework: openplatform
Product: OpenPlatform (openplatform@5)
Language: nl
Content-SHA256: 84ecc31fc78d44b308ce6415eabd146e7d847ee8399a7e4eab37cea502ba07e2
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

Een toepassing is een record dat de beheerder aanmaakt in het **setup**-scherm (`/setup/`, de apps-API van de plugin `setup`). Het record is het contract tussen OpenPlatform en je toepassing: waar ze woont, hoe de twee bewijzen wie ze zijn en wat de gebruiker erin mag doen. Het schema van het record is `@Apps` in `plugins/setup/schemas/apps.js`.

| Veld | Verplicht | Betekenis |
|---|---|---|
| `name` | ja | de naam die in het portaal wordt getoond |
| `url` | ja | het adres dat OpenPlatform opent |
| `reqtoken` | ja | een geheim dat jij kiest en dat **beide kanten kennen**: het ondertekent het verzoek |
| `restoken` | ja | een tweede geheim, ook gedeeld: de toepassing gebruikt het om haar antwoord te ondertekenen |
| `color`, `icon` | nee | hoe de toepassing er in het portaal uitziet |
| `meta` | nee | een adres (URL) dat de metagegevens van de toepassing teruggeeft: het setup-scherm kan ze downloaden (`Apps/download`) om het record in te vullen |
| `sortindex` | nee | de volgorde in de lijst (een nieuwe toepassing komt achteraan) |
| `notifications` | nee | of de toepassing meldingen mag sturen |
| `isexternal` | nee | de toepassing wordt **niet** geopend binnen het frame van het portaal: het antwoord aan de toepassing bevat `iframe: false` |
| `isbookmark` | nee | de toepassing is een gewone link: geen tokenhandshake, alleen een sessie-id in de query string |
| `isnewtab` | nee | open ze in een nieuw browsertabblad in plaats van in het frame van het portaal (de instelling `newtab` doet dat voor elke toepassing) |
| `isscrollbar` | nee | het frame van de toepassing in het portaal behoudt zijn schuifbalk (het portaal zet `scrolling` op `yes` of `no`) |
| `isdisabled` | nee | schakel haar uit voor iedereen: de gebruiker krijgt "App has been temporary disabled" |
| `permissions` | nee | de lijst met rechten van de toepassing: elk heeft een `id`, een `name` en een `value` (zie [groepen en rechten](/en/openplatform/groups-and-permissions/)) |

De tabel `tbl_app` heeft ook een kolom `allow` ("staat alleen specifieke IP-adressen toe"): als ze adressen bevat, kan de toepassing de protocol-endpoints van OpenPlatform alleen vanaf die adressen aanroepen. Het bovenstaande setup-schema noemt haar niet, dus het is een databasekolom die je rechtstreeks invult.

## De twee tokens

`reqtoken` en `restoken` worden nooit naar de browser gestuurd. OpenPlatform leidt daar bij elke start de waarden uit af die onderweg zijn: het token in het adres van de toepassing en de header die de toepassing terugstuurt. De afleiding staat in [hoe een app verbinding maakt](/en/openplatform/how-an-app-connects/). Gebruik lange willekeurige waarden en voor elke toepassing een ander paar.

## Verwijderen en wijzigen

Een toepassing wordt nooit uit de tabel gewist: verwijderen (`Apps/remove`) zet `isremoved` en de datum van verwijdering, wist de cache van de gebruikers die haar hadden, en `isdisabled` schakelt haar uit zonder haar te verwijderen. Wanneer het adres van het platform (de instelling `url`) verandert, wist OpenPlatform de meldingslinks van elke gebruiker en verwijdert de open toepassingssessies, omdat beide dat adres bevatten ([instellingen en database](/en/openplatform/settings-and-database/)).

Onthoud de regel uit de README: een geregistreerde toepassing is voor niemand zichtbaar totdat er een groep aan is toegewezen.
