Tmavý režim
Typy oprávnění
Atrea User API podporuje dva typy oprávnění:
Binary (binární)
Jednoduché ano/ne oprávnění. Uživatel buď přístup má, nebo nemá.
| access_level | Meaning |
|---|---|
"allowed" | Přístup povolen |
| (není) | Přístup zamítnut |
Příklady use-case
can_export— může exportovat datanotifications.send— může posílat notifikaceadmin.access— má přístup do admin sekce
Vytvoření
bash
POST /api/applications/moje-app/permissions
{
"code": "can_export",
"description": "Může exportovat data",
"type": "binary"
}Check
bash
POST /api/check
{
"email": "uzivatel@firma.cz",
"app": "moje-app",
"permission": "can_export"
}
# → { "allowed": true/false }Tiered (víceúrovňové)
Granulárni oprávnění se třemi úrovněmi přístupu.
| access_level | Meaning | Implikuje |
|---|---|---|
"edit" | Plný přístup (čtení + editace) | implicitně zahrnuje "view" |
"view" | Pouze čtení | — |
| (není) | Žádný přístup | — |
Implikace
Pokud má uživatel "edit", pak check na "view" vrátí true. Editace automaticky zahrnuje čtení.
Příklady use-case
documents.manage—edit= plná správa,view= čtení dokumentůreports—edit= tvorba reportů,view= prohlíženíusers—edit= správa uživatelů,view= seznam uživatelů
Vytvoření
bash
POST /api/applications/moje-app/permissions
{
"code": "documents.manage",
"description": "Správa dokumentů",
"type": "tiered"
}Check — vrací access_level
bash
POST /api/check/effective
{
"email": "uzivatel@firma.cz",
"app": "moje-app"
}
# Odpověď zahrnuje:
# {
# "code": "documents.manage",
# "type": "tiered",
# "accessLevel": "view", # nebo "edit" nebo null
# "granted": true
# }Porovnání
| Vlastnost | Binary | Tiered |
|---|---|---|
| Hodnoty | allowed / denied | edit / view / denied |
| Implikace | ne | edit → view |
| Agregace více rolí | OR (allowed wins) | MAX (edit > view) |
| Vhodné pro | Feature flags, přístup k sekci | CRUD akce, čtení vs. editace |
access_level v role_permissions
Při přiřazení oprávnění roli nastavíte access_level:
bash
PUT /api/applications/:appCode/roles/:id/permissions
{
"permissions": [
{ "permissionId": 1, "accessLevel": "allowed" }, # binary
{ "permissionId": 2, "accessLevel": "edit" }, # tiered — plný přístup
{ "permissionId": 3, "accessLevel": "view" } # tiered — jen čtení
]
}Validní hodnoty accessLevel:
- Pro
binaryoprávnění:"allowed" - Pro
tieredoprávnění:"edit"nebo"view"
Agregace při více rolích
Pokud má uživatel více rolí, použije se nejlepší access_level ze všech rolí:
| Role A | Role B | Výsledek |
|---|---|---|
allowed | (nemá) | allowed |
| (nemá) | allowed | allowed |
view | edit | edit |
view | (nemá) | view |
| (nemá) | (nemá) | denied |
Pořadí priority: edit > view > allowed > (denied)
Hierarchie oprávnění (UI groupování)
Oprávnění lze zanořit pomocí parentPermissionId pro lepší přehled v UI:
Sekce "Dokumenty" (groupName: "Dokumenty")
├── documents.read (binary) — čtení dokumentů
└── documents.manage (tiered) — správa dokumentů
Sekce "Uživatelé" (groupName: "Uživatelé")
├── users.view (binary)
└── users.manage (tiered)bash
POST /api/applications/moje-app/permissions
{
"code": "documents.read",
"type": "binary",
"groupName": "Dokumenty",
"parentPermissionId": 10 # ID parent oprávnění (volitelné)
}WARNING
parentPermissionId ovlivňuje pouze zobrazení v UI (tree view). Nemá žádný vliv na evaluaci oprávnění.