# Felhasználók, csoportok és jogosultságok az OpenPlatformban

> Hogyan ér el egy felhasználó egy alkalmazást az OpenPlatformban: a csoportok döntik el, mely alkalmazásokat látja a felhasználó, és milyen jogosultsági értékeket kap az egyes alkalmazás.

Framework: openplatform
Product: OpenPlatform (openplatform@5)
Language: hu
Content-SHA256: 6aa1dd2d64169cc29b17b748f167f4df4b331076441af00ca8e99f834e02f6b1
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

Az OpenPlatform szétválasztja, hogy **ki** (felhasználók), **hol** (alkalmazások) és **mit** (jogosultságok), középen a csoportokkal:

- A **felhasználónak** van neve, e-mailje, nyelve, jelszava és jelzői (`sa` az adminisztrátornak, `isconfirmed`, `isdisabled`, `isinactive`, `notifications`, `sounds`...), és tetszőleges számú csoporthoz tartozik (`@User` séma, `plugins/setup/schemas/users.js`).
- A **csoportnak** van neve, színe, ikonja, egy opcionális `reference` értéke és jogosultságok listája (`@Group` séma, `plugins/setup/schemas/groups.js`).
- Az **alkalmazás** saját jogosultságokat deklarál: mindegyiknek van neve és egy `value` értéke, egy egyszerű karakterlánc, amelyet az alkalmazás megért (`plugins/setup/schemas/apps.js`).

## Hogyan számítódik a hozzáférés

A `definitions/func.js` fájlban lévő `FUNC.permissions(userid, callback)` függvény egy felhasználóhoz összeállítja:

1. a felhasználó nem letiltott csoportjait;
2. ezeknek a csoportoknak a `tbl_group_permission` sorait: egy jogosultságot tartalmazó sor megadja az alkalmazás adott jogosultságát, a jogosultság **nélküli** sor pedig csak magát az alkalmazást adja (a felhasználó látja, és üres jogosultságlistát kap);
3. minden megadott jogosultság `value` értékét, csak az el nem távolított és nem letiltott alkalmazásokra.

Az eredmény három részből áll: a felhasználó alkalmazásai (`apps`), a jogosultsági értékek alkalmazásonként (`permissions`) és a csoportok (`groups`). JSON-ként tárolódik a felhasználó `cache` oszlopában, egy `cachefilter` mezővel, amely felsorolja a csoportokat (`G<id>`) és alkalmazásokat (`A<id>`), amelyektől függ. Ha egy csoport vagy alkalmazás változik, a `FUNC.clearcache(id)` törli minden olyan felhasználó gyorsítótárát, amelynek szűrője tartalmazza az azonosítót, és a következő kérés újraépíti.

## Hol látja az alkalmazás

- A portál csak az `apps` alkalmazásait listázza, és megtagadja bármely más megnyitását ("App not found").
- Az alkalmazás a saját listáját a `permissions` mezőben kapja, amikor egy indítást ellenőriz (`value` karakterláncok tömbje), a csoportok azonosítóival együtt, hogy eldönthesse, mit mutasson ([hogyan csatlakozik egy app](/en/openplatform/how-an-app-connects/)).
- A beállítási képernyő a felhasználó `sa` jelzője alapján dönti el, ki használhatja.

Egy jó szokás a kód működéséből adódóan: a jogosultság `value` értékét nevezd el az alkalmazásod műveletéről (`orders.read`, `orders.write`), és rendeld a csoportokat ezekhez az értékekhez az OpenPlatformban, így az alkalmazásod csak karakterláncokat ellenőriz.
