# Používatelia, skupiny a oprávnenia v OpenPlatform

> Ako sa používateľ dostane k aplikácii v OpenPlatform: skupiny rozhodujú, ktoré aplikácie používateľ vidí a aké hodnoty oprávnení každá aplikácia dostane.

Framework: openplatform
Product: OpenPlatform (openplatform@5)
Language: sk
Content-SHA256: 31d781ce71b88f79676540fd57193b1d3f1010edafa4a24ab438cccec2bc2e07
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

OpenPlatform oddeľuje **kto** (používatelia), **kde** (aplikácie) a **čo** (oprávnenia) so skupinami uprostred:

- **Používateľ** má meno, e-mail, jazyk, heslo a príznaky (`sa` pre správcu, `isconfirmed`, `isdisabled`, `isinactive`, `notifications`, `sounds`...) a patrí do ľubovoľného počtu skupín (schéma `@User`, `plugins/setup/schemas/users.js`).
- **Skupina** má názov, farbu, ikonu, voliteľný `reference` a zoznam oprávnení (schéma `@Group`, `plugins/setup/schemas/groups.js`).
- **Aplikácia** deklaruje vlastné oprávnenia: každé má názov a `value`, obyčajný reťazec, ktorému aplikácia rozumie (`plugins/setup/schemas/apps.js`).

## Ako sa počíta prístup

Funkcia `FUNC.permissions(userid, callback)` v `definitions/func.js` zostaví pre používateľa:

1. skupiny používateľa, ktoré nie sú zakázané;
2. riadky `tbl_group_permission` týchto skupín: riadok s oprávnením udeľuje toto oprávnenie aplikácie a riadok **bez** oprávnenia iba udeľuje aplikáciu (používateľ ju vidí a dostane prázdny zoznam oprávnení);
3. `value` každého udeleného oprávnenia, iba pre aplikácie, ktoré nie sú odstránené ani zakázané.

Výsledok má tri časti: aplikácie používateľa (`apps`), hodnoty oprávnení podľa aplikácie (`permissions`) a skupiny (`groups`). Ukladá sa ako JSON do stĺpca `cache` používateľa spolu s `cachefilter`, ktorý uvádza skupiny (`G<id>`) a aplikácie (`A<id>`), od ktorých závisí. Keď sa zmení skupina alebo aplikácia, `FUNC.clearcache(id)` vymaže vyrovnávaciu pamäť každého používateľa, ktorého filter obsahuje tento identifikátor, a ďalšia požiadavka ju zostaví znova.

## Kde ju aplikácia vidí

- Portál uvádza iba aplikácie v `apps` a odmietne otvoriť akúkoľvek inú ("App not found").
- Aplikácia dostane svoj zoznam v `permissions`, keď overuje spustenie (pole reťazcov `value`), spolu s id skupín, aby mohla rozhodnúť, čo zobraziť ([ako sa aplikácia pripája](/en/openplatform/how-an-app-connects/)).
- Obrazovka nastavení rozhoduje, kto ju smie používať, podľa príznaku `sa` používateľa.

Dobrý zvyk, ktorý vyplýva zo spôsobu, akým kód funguje: pomenujte `value` oprávnenia podľa akcie vo vašej aplikácii (`orders.read`, `orders.write`) a skupiny namapujte na tieto hodnoty v OpenPlatform, aby vaša aplikácia kontrolovala iba reťazce.
