# Nastavení, služby a databázové tabulky OpenPlatform

> Konfigurační klíče, které OpenPlatform čte, co dělají jeho služby na pozadí a k čemu slouží každá tabulka schématu op.

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

## Nastavení

OpenPlatform ukládá svou konfiguraci do tabulky `cl_config` a načítá ji do `CONF` Total.js při startu a každých osm hodin (`definitions/init.js`). Obrazovka nastavení čte a ukládá tyto klíče (`plugins/setup/schemas/settings.js`):

| Klíč | Význam |
|---|---|
| `name`, `icon`, `color` | název, logo a barva platformy |
| `url` | veřejná adresa platformy (bez koncového `/`). Její změna vymaže odkazy oznámení a otevřené relace aplikací |
| `language` | výchozí jazyk |
| `mail_smtp`, `mail_smtp_options`, `mail_from` | server SMTP, jeho volby (JSON) a odesílatel; obrazovka nastavení je umí otestovat |
| `$tms`, `secret_tms` | publikovat události přes TMS a tajemství tohoto spojení |
| `allow_token`, `token` | zapnout veřejné API `GET /users/` a jeho token |
| `newtab` | otevírat každou aplikaci v nové kartě |
| `sync`, `sync_token` | přijímat socket `/sync/` jiných instancí s jeho tokenem |

První spuštění (`database.sql`) také vygeneruje v `cl_config` hodnoty, které obrazovka nastavení neupravuje: `id` instalace, `secret` autentizace, název `cookie`, `salt` hesel, `saltchecksum` kontrolních součtů a tajemství spojení TMS. Klíče vytvoří s těmito výchozími hodnotami:

| Klíč | Výchozí | Význam |
|---|---|---|
| `auth_cookie_expire` | `1 month` | jak dlouho žije cookie relace |
| `auth_expire` | `5 minutes` | jak dlouho se přihlášený uživatel drží v paměti, než se znovu přečte |
| `auth_cookie_options` | `{"httponly":true,"security":"lax"}` | volby cookie relace |
| `auth_strict` | `false` | přísné relace |
| `app_session_expire` | `1 day` | jak dlouho trvá relace aplikace |
| `cdn` | `https://cdn.componentator.com/` | CDN rozhraní |
| `language` | `eu` | výchozí jazyk |
| `token`, `sync_token` | vygenerováno | token API uživatelů a synchronizačního socketu (obě funkce jsou ve výchozím stavu vypnuté) |

Klíč `servicetoken`, se kterým endpoint nahrávání obrázků porovnává svůj token dotazu, skript **nevytváří** a obrazovka nastavení jej neupravuje: existuje, jen pokud jej do `cl_config` přidáte sami.

Skript také vytvoří skupinu **Admin** a prvního uživatele (`info@totaljs.com`, správce, potvrzený), který do ní patří; viz [instalace](/en/openplatform/install-openplatform/).

## Služby na pozadí

Total.js spouští službu každou minutu. OpenPlatform ji používá (`definitions/init.js`) k:

- vymazání mezipaměti ověření (každé 2 minuty);
- uložení denních statistik: uživatelé online, maximum a počet podle zařízení (každé 3 minuty);
- opětovnému načtení konfigurace z databáze (každých 8 hodin);
- smazání vypršených relací aplikací a platformy (každých 12 hodin);
- odeslání e-mailových souhrnů nepřečtených oznámení (každých 11 minut, když je pošta nastavena).

## Databáze

Vše je ve schématu PostgreSQL `op`:

| Tabulka | Co obsahuje |
|---|---|
| `cl_config` | konfigurace (klíč, hodnota, typ) |
| `tbl_user` | uživatelé: profil, hash hesla, příznaky, počítadla a oprávnění v mezipaměti |
| `tbl_group` | skupiny |
| `tbl_user_group` | který uživatel patří do které skupiny |
| `tbl_session` | relace uživatelů v portálu (zařízení, adresa, platnost) |
| `tbl_app` | aplikace: adresa, tajemství, příznaky a povolené adresy |
| `tbl_app_permission` | oprávnění, která každá aplikace deklaruje |
| `tbl_group_permission` | která oprávnění (nebo jen které aplikace) každá skupina uděluje |
| `tbl_app_session` | spouštěcí relace aplikací a jejich odvozené tokeny |
| `tbl_user_app` | na uživatele a aplikaci: odkazy oznámení a zda oznámení přijímají |
| `tbl_notification` | oznámení |
| `tbl_visitor` | denní statistiky návštěvníků |
| `tbl_feedback` | zpětná vazba, kterou uživatelé posílají z portálu |

Soubory s datem `database-2023-09-15.sql`, `database-2024-03-21.sql`, `database-2024-10-22.sql` a `database-2024-10-30.sql` v repozitáři jsou změny schématu v čase a `database.sql` je úplný skript, který spouští první spuštění. Toto schéma zálohujte jako každou jinou databázi PostgreSQL.
