ForgeOpenPlatform
de

OpenPlatform

Benutzer, Gruppen und Berechtigungen in OpenPlatform

OpenPlatform · openplatform@5 openplatformusersgroupspermissions

OpenPlatform trennt wer (Benutzer), wo (Anwendungen) und was (Berechtigungen) mit den Gruppen in der Mitte:

  • Ein Benutzer hat einen Namen, eine E-Mail, eine Sprache, ein Passwort und Flags (sa für Administrator, isconfirmed, isdisabled, isinactive, notifications, sounds...) und gehört beliebig vielen Gruppen an (Schema @User, plugins/setup/schemas/users.js).
  • Eine Gruppe hat einen Namen, eine Farbe, ein Icon, eine optionale reference und eine Liste von Berechtigungen (Schema @Group, plugins/setup/schemas/groups.js).
  • Eine Anwendung deklariert ihre eigenen Berechtigungen: Jede hat einen Namen und einen value, eine einfache Zeichenkette, die die Anwendung versteht (plugins/setup/schemas/apps.js).

Wie der Zugriff berechnet wird

Die Funktion FUNC.permissions(userid, callback) in definitions/func.js baut für einen Benutzer:

  1. die Gruppen des Benutzers, die nicht deaktiviert sind;
  2. die Zeilen von tbl_group_permission dieser Gruppen: Eine Zeile mit einer Berechtigung gewährt diese Berechtigung einer Anwendung, und eine Zeile ohne Berechtigung gewährt nur die Anwendung (der Benutzer sieht sie und erhält eine leere Berechtigungsliste);
  3. den value jeder gewährten Berechtigung, nur für Anwendungen, die nicht entfernt und nicht deaktiviert sind.

Das Ergebnis hat drei Teile: die Anwendungen des Benutzers (apps), die Berechtigungswerte je Anwendung (permissions) und die Gruppen (groups). Es wird als JSON in der Spalte cache des Benutzers gespeichert, mit einem cachefilter, der die Gruppen (G<id>) und Anwendungen (A<id>) auflistet, von denen es abhängt. Ändert sich eine Gruppe oder eine Anwendung, leert FUNC.clearcache(id) den Cache jedes Benutzers, dessen Filter diese Kennung enthält, und die nächste Anfrage baut ihn neu auf.

Wo die Anwendung es sieht

  • Das Portal listet nur die Anwendungen in apps auf und weigert sich, eine andere zu öffnen ("App not found").
  • Die Anwendung erhält ihre eigene Liste in permissions, wenn sie einen Start verifiziert (ein Array der value-Zeichenketten), zusammen mit den Ids der Gruppen, damit sie entscheiden kann, was sie zeigt (wie sich eine App verbindet).
  • Der Setup-Bildschirm entscheidet über das Flag sa des Benutzers, wer ihn nutzen darf.

Eine gute Gewohnheit, die sich aus der Funktionsweise des Codes ergibt: Benennen Sie den value einer Berechtigung nach der Aktion in Ihrer Anwendung (orders.read, orders.write) und ordnen Sie Gruppen in OpenPlatform diesen Werten zu, sodass Ihre Anwendung nur Zeichenketten prüft.