ForgeOpenPlatform
sk

OpenPlatform

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

OpenPlatform · openplatform@5 openplatformusersgroupspermissions

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).
  • 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.