# Instellingen, services en databasetabellen van OpenPlatform

> De configuratiesleutels die OpenPlatform leest, wat zijn achtergrondservices doen en waarvoor elke tabel van het schema op dient.

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

## De instellingen

OpenPlatform bewaart zijn configuratie in de tabel `cl_config` en laadt die bij de start en om de acht uur in de `CONF` van Total.js (`definitions/init.js`). Het setup-scherm leest en bewaart deze sleutels (`plugins/setup/schemas/settings.js`):

| Sleutel | Betekenis |
|---|---|
| `name`, `icon`, `color` | de naam, het logo en de kleur van het platform |
| `url` | het openbare adres van het platform (zonder de laatste `/`). Wijzigen wist de meldingslinks en de open toepassingssessies |
| `language` | de standaardtaal |
| `mail_smtp`, `mail_smtp_options`, `mail_from` | de SMTP-server, zijn opties (JSON) en de afzender; het setup-scherm kan ze testen |
| `$tms`, `secret_tms` | de gebeurtenissen via TMS publiceren, en het geheim van die verbinding |
| `allow_token`, `token` | de openbare API `GET /users/` en haar token inschakelen |
| `newtab` | elke toepassing in een nieuw tabblad openen |
| `sync`, `sync_token` | de `/sync/`-socket van andere instanties accepteren, met zijn token |

De eerste start (`database.sql`) genereert in `cl_config` ook waarden die het setup-scherm niet bewerkt: de `id` van de installatie, het `secret` van de authenticatie, de naam van de `cookie`, de `salt` van de wachtwoorden, de `saltchecksum` van de controlesommen en het geheim van de TMS-verbinding. Hij maakt de sleutels aan met deze standaardwaarden:

| Sleutel | Standaard | Betekenis |
|---|---|---|
| `auth_cookie_expire` | `1 month` | hoe lang de sessiecookie leeft |
| `auth_expire` | `5 minutes` | hoe lang de aangemelde gebruiker in het geheugen wordt gehouden voordat hij opnieuw wordt gelezen |
| `auth_cookie_options` | `{"httponly":true,"security":"lax"}` | de opties van de sessiecookie |
| `auth_strict` | `false` | strikte sessies |
| `app_session_expire` | `1 day` | hoe lang een toepassingssessie duurt |
| `cdn` | `https://cdn.componentator.com/` | de CDN van de interface |
| `language` | `eu` | de standaardtaal |
| `token`, `sync_token` | gegenereerd | het token van de gebruikers-API en van de synchronisatiesocket (beide functies staan standaard uit) |

De sleutel `servicetoken`, waarmee het endpoint voor het uploaden van afbeeldingen zijn querytoken vergelijkt, wordt **niet** door het script aangemaakt en het setup-scherm bewerkt hem niet: hij bestaat alleen als je hem zelf aan `cl_config` toevoegt.

Het script maakt ook de groep **Admin** aan en de eerste gebruiker (`info@totaljs.com`, beheerder, bevestigd) die erbij hoort; zie [installeren](/en/openplatform/install-openplatform/).

## De achtergrondservices

Total.js voert elke minuut een service uit. OpenPlatform gebruikt hem (`definitions/init.js`) om:

- de geheugencache van de verificaties te wissen (elke 2 minuten);
- de dagelijkse statistieken op te slaan: gebruikers online, het maximum en het aantal per apparaat (elke 3 minuten);
- de configuratie opnieuw uit de database te laden (elke 8 uur);
- de verlopen toepassings- en platformsessies te verwijderen (elke 12 uur);
- de e-mailsamenvattingen van ongelezen meldingen te sturen (elke 11 minuten, wanneer de mail is geconfigureerd).

## De database

Alles staat in het PostgreSQL-schema `op`:

| Tabel | Wat ze bevat |
|---|---|
| `cl_config` | de configuratie (sleutel, waarde, type) |
| `tbl_user` | de gebruikers: profiel, wachtwoordhash, vlaggen, tellers en de gecachete rechten |
| `tbl_group` | de groepen |
| `tbl_user_group` | welke gebruiker bij welke groep hoort |
| `tbl_session` | de sessies van de gebruikers in het portaal (apparaat, adres, verloop) |
| `tbl_app` | de toepassingen: adres, geheimen, vlaggen en toegestane adressen |
| `tbl_app_permission` | de rechten die elke toepassing declareert |
| `tbl_group_permission` | welke rechten (of alleen welke toepassingen) elke groep verleent |
| `tbl_app_session` | de startsessies van de toepassingen en hun afgeleide tokens |
| `tbl_user_app` | per gebruiker en toepassing: de meldingslinks en of ze meldingen accepteren |
| `tbl_notification` | de meldingen |
| `tbl_visitor` | de dagelijkse bezoekersstatistieken |
| `tbl_feedback` | de feedback die gebruikers vanuit het portaal sturen |

De gedateerde bestanden `database-2023-09-15.sql`, `database-2024-03-21.sql`, `database-2024-10-22.sql` en `database-2024-10-30.sql` in de repository zijn de wijzigingen van het schema in de loop van de tijd, en `database.sql` is het volledige script dat de eerste start uitvoert. Maak een back-up van dit schema zoals van elke andere PostgreSQL-database.
