ForgeOpenPlatform
pl

OpenPlatform

Użytkownicy, grupy i uprawnienia w OpenPlatform

OpenPlatform · openplatform@5 openplatformusersgroupspermissions

OpenPlatform oddziela kto (użytkownicy), gdzie (aplikacje) i co (uprawnienia), a pośrodku są grupy:

  • Użytkownik ma nazwę, e-mail, język, hasło i flagi (sa dla administratora, isconfirmed, isdisabled, isinactive, notifications, sounds...) i należy do dowolnej liczby grup (schemat @User, plugins/setup/schemas/users.js).
  • Grupa ma nazwę, kolor, ikonę, opcjonalny reference i listę uprawnień (schemat @Group, plugins/setup/schemas/groups.js).
  • Aplikacja deklaruje własne uprawnienia: każde ma nazwę i value, zwykły ciąg znaków zrozumiały dla aplikacji (plugins/setup/schemas/apps.js).

Jak obliczany jest dostęp

Funkcja FUNC.permissions(userid, callback) w definitions/func.js buduje dla użytkownika:

  1. grupy użytkownika, które nie są wyłączone;
  2. wiersze tbl_group_permission tych grup: wiersz z uprawnieniem przyznaje to uprawnienie aplikacji, a wiersz bez uprawnienia przyznaje tylko aplikację (użytkownik ją widzi i otrzymuje pustą listę uprawnień);
  3. value każdego przyznanego uprawnienia, tylko dla aplikacji, które nie są usunięte ani wyłączone.

Wynik ma trzy części: aplikacje użytkownika (apps), wartości uprawnień według aplikacji (permissions) i grupy (groups). Jest zapisywany jako JSON w kolumnie cache użytkownika, wraz z cachefilter wymieniającym grupy (G<id>) i aplikacje (A<id>), od których zależy. Gdy zmienia się grupa lub aplikacja, FUNC.clearcache(id) czyści pamięć podręczną każdego użytkownika, którego filtr zawiera ten identyfikator, a kolejne żądanie odbudowuje ją.

Gdzie widzi to aplikacja

  • Portal wyświetla tylko aplikacje z apps i odmawia otwarcia jakiejkolwiek innej ("App not found").
  • Aplikacja otrzymuje własną listę w permissions, gdy weryfikuje uruchomienie (tablica ciągów value), razem z identyfikatorami grup, aby mogła zdecydować, co pokazać (jak łączy się aplikacja).
  • Ekran konfiguracji decyduje, kto może z niego korzystać, na podstawie flagi sa użytkownika.

Dobry nawyk, wynikający z działania kodu: nazwij value uprawnienia według akcji w swojej aplikacji (orders.read, orders.write) i przypisz grupy do tych wartości w OpenPlatform, aby aplikacja sprawdzała tylko ciągi znaków.