ForgeOpenPlatform
sv

OpenPlatform

Användare, grupper och behörigheter i OpenPlatform

OpenPlatform · openplatform@5 openplatformusersgroupspermissions

OpenPlatform skiljer vem (användare), var (applikationer) och vad (behörigheter) åt, med grupperna i mitten:

  • En användare har ett namn, en e-postadress, ett språk, ett lösenord och flaggor (sa för administratör, isconfirmed, isdisabled, isinactive, notifications, sounds...) och tillhör valfritt antal grupper (schemat @User, plugins/setup/schemas/users.js).
  • En grupp har ett namn, en färg, en ikon, en valfri reference och en lista med behörigheter (schemat @Group, plugins/setup/schemas/groups.js).
  • En applikation deklarerar sina egna behörigheter: var och en har ett namn och ett value, en vanlig sträng som applikationen förstår (plugins/setup/schemas/apps.js).

Hur åtkomsten beräknas

Funktionen FUNC.permissions(userid, callback) i definitions/func.js bygger för en användare:

  1. användarens grupper som inte är inaktiverade;
  2. raderna i tbl_group_permission för de grupperna: en rad med en behörighet ger den behörigheten för en applikation, och en rad utan behörighet ger bara applikationen (användaren ser den och får en tom lista med behörigheter);
  3. value för varje beviljad behörighet, bara för applikationer som inte är borttagna och inte inaktiverade.

Resultatet har tre delar: användarens applikationer (apps), behörighetsvärdena per applikation (permissions) och grupperna (groups). Det lagras som JSON i användarens kolumn cache, med ett cachefilter som listar de grupper (G<id>) och applikationer (A<id>) det beror på. När en grupp eller applikation ändras rensar FUNC.clearcache(id) cachen för varje användare vars filter innehåller den identifieraren, och nästa begäran bygger upp den igen.

Var applikationen ser det

  • Portalen listar bara applikationerna i apps och vägrar öppna någon annan ("App not found").
  • Applikationen får sin egen lista i permissions när den verifierar en start (en array av value-strängar), tillsammans med gruppernas id:n, så att den kan avgöra vad som ska visas (hur en app ansluter).
  • Setup-skärmen avgör vem som får använda den genom användarens flagga sa.

En bra vana, som följer av hur koden fungerar: döp value för en behörighet efter åtgärden i din applikation (orders.read, orders.write) och koppla grupper till de värdena i OpenPlatform, så att din applikation bara kontrollerar strängar.