ForgeOpenPlatform
cs

OpenPlatform

Uživatelé, skupiny a oprávnění v OpenPlatform

OpenPlatform · openplatform@5 openplatformusersgroupspermissions

OpenPlatform odděluje kdo (uživatelé), kde (aplikace) a co (oprávnění) se skupinami uprostřed:

  • Uživatel má jméno, e-mail, jazyk, heslo a příznaky (sa pro správce, isconfirmed, isdisabled, isinactive, notifications, sounds...) a patří do libovolného počtu skupin (schéma @User, plugins/setup/schemas/users.js).
  • Skupina má název, barvu, ikonu, volitelný reference a seznam oprávnění (schéma @Group, plugins/setup/schemas/groups.js).
  • Aplikace deklaruje vlastní oprávnění: každé má název a value, prostý řetězec, kterému aplikace rozumí (plugins/setup/schemas/apps.js).

Jak se počítá přístup

Funkce FUNC.permissions(userid, callback) v definitions/func.js sestaví pro uživatele:

  1. skupiny uživatele, které nejsou zakázané;
  2. řádky tbl_group_permission těchto skupin: řádek s oprávněním uděluje toto oprávnění aplikace a řádek bez oprávnění pouze uděluje aplikaci (uživatel ji vidí a dostane prázdný seznam oprávnění);
  3. value každého uděleného oprávnění, pouze pro aplikace, které nejsou odstraněné ani zakázané.

Výsledek má tři části: aplikace uživatele (apps), hodnoty oprávnění podle aplikace (permissions) a skupiny (groups). Ukládá se jako JSON do sloupce cache uživatele spolu s cachefilter, který uvádí skupiny (G<id>) a aplikace (A<id>), na kterých závisí. Když se změní skupina nebo aplikace, FUNC.clearcache(id) vymaže mezipaměť každého uživatele, jehož filtr obsahuje tento identifikátor, a další požadavek ji znovu sestaví.

Kde ji aplikace vidí

  • Portál uvádí pouze aplikace v apps a odmítne otevřít jakoukoli jinou ("App not found").
  • Aplikace dostane svůj seznam v permissions, když ověřuje spuštění (pole řetězců value), spolu s id skupin, aby mohla rozhodnout, co zobrazit (jak se aplikace připojuje).
  • Obrazovka nastavení rozhoduje, kdo ji smí používat, podle příznaku sa uživatele.

Dobrý zvyk, který vyplývá ze způsobu, jakým kód funguje: pojmenujte value oprávnění podle akce ve vaší aplikaci (orders.read, orders.write) a skupiny namapujte na tyto hodnoty v OpenPlatform, aby vaše aplikace kontrolovala jen řetězce.