Používatelia, skupiny a oprávnenia v OpenPlatform
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 (
sapre 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ý
referencea 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:
- skupiny používateľa, ktoré nie sú zakázané;
- riadky
tbl_group_permissiontý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í); valuekaž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
appsa odmietne otvoriť akúkoľvek inú ("App not found"). - Aplikácia dostane svoj zoznam v
permissions, keď overuje spustenie (pole reťazcovvalue), spolu s id skupín, aby mohla rozhodnúť, čo zobraziť (ako sa aplikácia pripája). - Obrazovka nastavení rozhoduje, kto ju smie používať, podľa príznaku
sapouží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.