Ugrás a fő tartalomhoz

Jogosultságok

Minden tenant API-végpont egy jogosultsághoz kötött. A tenant-host a kérés előtt kiértékeli, hogy a token tulajdonosának megvan-e az adott jog az adott szervezetben.

A jogosultság neve​

tenant.<szervezet>.<modul>.<csoport>.<művelet>
RészPéldaJelentés
<szervezet>acmea szervezet rövid neve (a GET /api/me/tenants válaszában látod)
<modul>webshop, warehouse, crm, …a modul kulcsa
<csoport>orders, inventory, blog.postserőforrás-csoport; lehet többtagú
<művelet>list, view, create, update, delete, …a művelet

Például a rendelések listázása az acme szervezetben: tenant.acme.webshop.orders.list.

A modulok jogosultság-katalógusa a Vecton kódjában egyetlen forrásból generálódik, és minden csoportnak és műveletnek magyar, angol és német neve is van — ezt látja a szervezet adminisztrátora a szerepkör-szerkesztőben, és ebből épül a marketplace-appok hozzájárulási képernyője is.

Szerepkörök és szabályok​

  • A felhasználó egy szervezetben szerepkört kap. Az alap szerepkörök: tulajdonos (Owner), adminisztrátor (Admin), vezető (Manager), tag (Member), valamint bolti és szervizes szerepkörök; a szervezet saját szerepkört is létrehozhat.
  • Egy szerepkörhöz szabályok (policy-k) tartoznak: { effect: allow | deny, action: [...], resource: { type, id } }.
  • A kiértékelés tiltás-elsőbbségű (deny-overrides): ha bármely illeszkedő szabály tilt, a jog nincs meg; különben akkor van meg, ha legalább egy illeszkedő szabály enged.
  • Bizonyos veszélyes műveletekhez (például hozzáférés kiadása) a felhasználónak a jog mellett frissen újra is kell hitelesítenie magát (step-up). Ilyenkor a válasz 403, és a hívás az újrahitelesítés után ismételhető.

Helyettesítő karakterek​

A szabályok action listája és az API-kulcsok hatóköre mintát is tartalmazhat:

MintaIlleszkedikNem illeszkedik
tenant.*.warehouse.*tenant.acme.warehouse.inventory.movetenant.acme.webshop.orders.list
tenant.*.warehouse.inventory.*tenant.acme.warehouse.inventory.movetenant.acme.warehouse.workers.list
tenant.acme.crm.tasks.viewcsak önmagatenant.acme.crm.tasks.update
*minden—

A * a minta belsejében pontosan egy szegmenst helyettesít, a záró .* egy vagy több mélyebb szegmenst is.

Hiba jogosultsághiánynál​

{
"message": "Nincs jogosultságod ehhez a művelethez.",
"error": "permission_denied",
"required_permission": "tenant.acme.webshop.orders.update",
"resource_type": "tenant",
"resource_id": null
}

A required_permission megmondja, melyik jog hiányzik — ezt kérd a szervezet adminisztrátorától, vagy API-kulcsnál add hozzá a hatókörhöz.

A saját jogaid lekérdezése​

GET https://identity.vecton.hu/api/me/permissions/{tenantId}
Authorization: Bearer <token>

A válasz data része a szerepkört (role), a tulajdonosi jelzőt (is_owner) és a hatályos jogosultságok listáját (permissions) adja az adott szervezetben. A szervezetek azonosítóit a GET /api/me/tenants adja.

Tokenfajták és jogok​

TokenMi számít
OAuth-token, személyes token (role szint)a felhasználó szerepköre
Személyes token (read szint)a felhasználó szerepköre, de csak olvasó kérés
Szervezeti API-kulcsa kulcs szerepköre, és ha van hatóköre, annak metszete
Marketplace-app tokena felhasználó jogai és az app engedélyezett hatóköre — mindkettőnek teljesülnie kell