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ész | Példa | Jelentés |
|---|---|---|
<szervezet> | acme | a 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.posts | erő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:
| Minta | Illeszkedik | Nem illeszkedik |
|---|---|---|
tenant.*.warehouse.* | tenant.acme.warehouse.inventory.move | tenant.acme.webshop.orders.list |
tenant.*.warehouse.inventory.* | tenant.acme.warehouse.inventory.move | tenant.acme.warehouse.workers.list |
tenant.acme.crm.tasks.view | csak önmaga | tenant.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
| Token | Mi 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-kulcs | a kulcs szerepköre, és ha van hatóköre, annak metszete |
| Marketplace-app token | a felhasználó jogai és az app engedélyezett hatóköre — mindkettőnek teljesülnie kell |