# Rejestracja aplikacji w OpenPlatform

> Pola rekordu aplikacji w OpenPlatform: adres, dwa wspólne tokeny, flagi decydujące o sposobie otwierania, jej uprawnienia i to, kto może do niej dotrzeć.

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

Aplikacja to rekord, który administrator tworzy na ekranie **konfiguracji** (`/setup/`, API aplikacji wtyczki `setup`). Rekord jest umową między OpenPlatform a Twoją aplikacją: gdzie działa, jak obie strony dowodzą, kim są, i co użytkownik może w niej robić. Schemat rekordu to `@Apps` w `plugins/setup/schemas/apps.js`.

| Pole | Wymagane | Znaczenie |
|---|---|---|
| `name` | tak | nazwa wyświetlana w portalu |
| `url` | tak | adres, który otwiera OpenPlatform |
| `reqtoken` | tak | sekret, który wybierasz i który **znają obie strony**: podpisuje żądanie |
| `restoken` | tak | drugi sekret, również wspólny: aplikacja używa go do podpisania odpowiedzi |
| `color`, `icon` | nie | wygląd aplikacji w portalu |
| `meta` | nie | adres (URL) zwracający metadane aplikacji: ekran konfiguracji może je pobrać (`Apps/download`), aby wypełnić rekord |
| `sortindex` | nie | kolejność na liście (nowa aplikacja trafia na koniec) |
| `notifications` | nie | czy aplikacja może wysyłać powiadomienia |
| `isexternal` | nie | aplikacja **nie** jest otwierana w ramce portalu: odpowiedź dla aplikacji zawiera `iframe: false` |
| `isbookmark` | nie | aplikacja jest zwykłym odnośnikiem: bez wymiany tokenów, tylko identyfikator sesji w query string |
| `isnewtab` | nie | otwórz ją w nowej karcie przeglądarki zamiast w ramce portalu (ustawienie `newtab` robi to dla każdej aplikacji) |
| `isscrollbar` | nie | ramka aplikacji w portalu zachowuje pasek przewijania (portal ustawia `scrolling` na `yes` lub `no`) |
| `isdisabled` | nie | wyłącz ją dla wszystkich: użytkownik otrzymuje "App has been temporary disabled" |
| `permissions` | nie | lista uprawnień aplikacji: każde ma `id`, `name` i `value` (zobacz [grupy i uprawnienia](/en/openplatform/groups-and-permissions/)) |

Tabela `tbl_app` ma też kolumnę `allow` ("zezwala tylko na określone adresy IP"): gdy zawiera adresy, aplikacja może wywoływać endpointy protokołu OpenPlatform tylko z nich. Powyższy schemat konfiguracji jej nie wymienia, więc jest to kolumna bazy danych, którą wypełniasz bezpośrednio.

## Dwa tokeny

`reqtoken` i `restoken` nigdy nie są wysyłane do przeglądarki. OpenPlatform wyprowadza z nich przy każdym uruchomieniu wartości, które podróżują: token w adresie aplikacji i nagłówek odsyłany przez aplikację. Wyprowadzenie opisano w [jak łączy się aplikacja](/en/openplatform/how-an-app-connects/). Używaj długich losowych wartości i innej pary dla każdej aplikacji.

## Usuwanie i zmiana

Aplikacja nigdy nie jest usuwana z tabeli: jej usunięcie (`Apps/remove`) ustawia `isremoved` i datę usunięcia oraz czyści pamięć podręczną użytkowników, którzy ją mieli, a `isdisabled` wyłącza ją bez usuwania. Gdy zmienia się adres platformy (ustawienie `url`), OpenPlatform czyści odnośniki powiadomień każdego użytkownika i usuwa otwarte sesje aplikacji, ponieważ oba zawierają ten adres ([ustawienia i baza danych](/en/openplatform/settings-and-database/)).

Pamiętaj o regule z README: zarejestrowana aplikacja nie jest widoczna dla nikogo, dopóki nie zostanie do niej przypisana grupa.
