Přeskočit obsah
P
API pro partnery
Napojení vlastní aplikace — přístup, autentizace a endpointy
API pro partnery / Oprávnění a role

Oprávnění a role#

Systém kontroluje u každého požadavku, zda smí daná identita provést danou akci nad daným zdrojem.

Role#

Role Kdo
guest nepřihlášený
registrated přihlášený uživatel
owner vlastník konkrétního záznamu
admin administrátor

Model je plochý#

Chybějící pravidlo znamená zamítnutí

Neexistuje dědičnost ani záložní pravidlo. Není-li pro kombinaci zdroje a akce záznam, akce se zamítne — i pro administrátora, dokud se pravidlo nedoplní.

Klíč pravidla má tvar:

:Api:<Modul>:<Zdroj>:<akce>

Například :Api:Eshop:Order:updateColumns.

Co je veřejné#

Nepřihlášeným je otevřené hlavně čtení — články, stránky, číselníky, kategorie a produkty. Zápis je vždy za přihlášením.

Konkrétní seznam je v datech, ne v kódu

Která pravidla jsou otevřená, je nastavení konkrétní instalace. Zjistíte to nejrychleji tak, že akci zavoláte bez tokenu — buď projde, nebo dostanete Permission denied.

Vlastnictví#

Role owner sama o sobě nepovoluje nic. Vlastnictví se ověřuje dotazem do databáze.

Vlastnictví se nikdy nebere z požadavku

Pošlete-li v datech vlastní identifikátor uživatele, systém ho ignoruje a při vkládání dosadí vlastníka ze serveru.

🔴 Vlastnictví nefunguje na kolekcích#

get-all, get-by a hromadné mazání jsou pro vlastníka vždy zamítnuté

Nelze říct „vrať mi moje záznamy“ obecným výpisem. Pro vlastní data existují zvláštní akce — ale řada z nich nemá HTTP obal a je tedy zvenčí nedostupná. Viz CRUD vzor.

Režimy#

Režim Chování
off nekontroluje se
log vyhodnotí a zapíše, nezamítá
enforce zamítá — současný stav

Vypínač platí pro celou větev API najednou

Neexistuje přepínač po modulech. Počítejte s tím, že se chování oprávnění může skokově změnit.

Zamítnutí#

{
  "success": false,
  "message": "Permission denied",
  "exception": null,
  "data": null,
  "code": 400
}

s kódem HTTP 403.

Kód 400 znamená zamítnuté oprávnění, ne „chybný požadavek“

Číselné kódy se nápadně podobají stavovým kódům HTTP, ale neodpovídají jim. Viz Chybové kódy.

Volání zevnitř systému#

Web a administrace volají tytéž zdroje vnitřní cestou — bez HTTP, přímým sestavením požadavku. Kontrolu oprávnění to ale neobchází: obě cesty procházejí týmž guardem a mají jen samostatný přepínač.

Pro vás jako externího klienta z toho plyne jedno

Chování, které vidíte na webu, nemusí být přes API dostupné — ne proto, že by web kontrolu obcházel, ale proto, že řada akcí nemá HTTP obal. Viz CRUD vzor.

Rozdíl mezi webem a API tedy není v oprávněních, ale v dostupnosti akcí

Nefunguje-li přes API něco, co web umí, hledejte chybějící endpoint nebo chybějící pravidlo — ne „výjimku pro web“.