# Registrare un’applicazione in OpenPlatform

> I campi di un record di applicazione in OpenPlatform: indirizzo, i due token condivisi, i flag che decidono come si apre, i suoi permessi e chi può raggiungerla.

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

Un’applicazione è un record che l’amministratore crea nella schermata di **configurazione** (`/setup/`, l’API delle app del plugin `setup`). Il record è il contratto tra OpenPlatform e la tua applicazione: dove vive, come i due dimostrano chi sono e cosa può fare l’utente al suo interno. Lo schema del record è `@Apps` in `plugins/setup/schemas/apps.js`.

| Campo | Obbligatorio | Significato |
|---|---|---|
| `name` | sì | il nome mostrato nel portale |
| `url` | sì | l’indirizzo che OpenPlatform apre |
| `reqtoken` | sì | un segreto che scegli tu e che **conoscono entrambe le parti**: firma la richiesta |
| `restoken` | sì | un secondo segreto, anch’esso condiviso: l’applicazione lo usa per firmare la sua risposta |
| `color`, `icon` | no | l’aspetto dell’applicazione nel portale |
| `meta` | no | un indirizzo (URL) che restituisce i metadati dell’applicazione: la schermata di configurazione può scaricarli (`Apps/download`) per compilare il record |
| `sortindex` | no | l’ordine nell’elenco (una nuova applicazione va in fondo) |
| `notifications` | no | se l’applicazione può inviare notifiche |
| `isexternal` | no | l’applicazione **non** viene aperta nel riquadro del portale: la risposta all’applicazione contiene `iframe: false` |
| `isbookmark` | no | l’applicazione è un semplice link: nessuno scambio di token, solo un identificatore di sessione nella query string |
| `isnewtab` | no | aprila in una nuova scheda del browser invece che nel riquadro del portale (l’impostazione `newtab` lo fa per ogni applicazione) |
| `isscrollbar` | no | il riquadro dell’applicazione nel portale mantiene la barra di scorrimento (il portale imposta `scrolling` su `yes` o `no`) |
| `isdisabled` | no | disattivala per tutti: l’utente riceve "App has been temporary disabled" |
| `permissions` | no | l’elenco dei permessi dell’applicazione: ognuno ha un `id`, un `name` e un `value` (vedi [gruppi e permessi](/en/openplatform/groups-and-permissions/)) |

La tabella `tbl_app` ha anche una colonna `allow` ("consente solo indirizzi IP specifici"): quando contiene indirizzi, l’applicazione può chiamare gli endpoint del protocollo di OpenPlatform solo da essi. Lo schema di configurazione qui sopra non la elenca, quindi è una colonna del database che compili direttamente.

## I due token

`reqtoken` e `restoken` non vengono mai inviati al browser. OpenPlatform ne deriva, per ogni avvio, i valori che viaggiano: il token nell’indirizzo dell’applicazione e l’intestazione che l’applicazione rimanda. La derivazione è in [come si connette un’app](/en/openplatform/how-an-app-connects/). Usa valori casuali lunghi e una coppia diversa per ogni applicazione.

## Rimuovere e modificare

Un’applicazione non viene mai eliminata dalla tabella: rimuoverla (`Apps/remove`) imposta `isremoved` e la data della rimozione, svuota la cache degli utenti che la avevano, e `isdisabled` la spegne senza rimuoverla. Quando cambia l’indirizzo della piattaforma (l’impostazione `url`), OpenPlatform svuota i link delle notifiche di ogni utente ed elimina le sessioni di applicazione aperte, perché entrambi contengono quell’indirizzo ([impostazioni e database](/en/openplatform/settings-and-database/)).

Ricorda la regola del README: un’applicazione registrata non è visibile a nessuno finché non le viene assegnato un gruppo.
