Skip to content

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 , nebo nemá.

access_levelMeaning
"allowed"Přístup povolen
(není)Přístup zamítnut

Příklady use-case

  • can_export — může exportovat data
  • notifications.send — může posílat notifikace
  • admin.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_levelMeaningImplikuje
"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.manageedit = plná správa, view = čtení dokumentů
  • reportsedit = tvorba reportů, view = prohlížení
  • usersedit = 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í

VlastnostBinaryTiered
Hodnotyallowed / deniededit / view / denied
Implikaceneedit → view
Agregace více rolíOR (allowed wins)MAX (edit > view)
Vhodné proFeature flags, přístup k sekciCRUD 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 binary oprávnění: "allowed"
  • Pro tiered oprá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 ARole BVýsledek
allowed(nemá)allowed
(nemá)allowedallowed
vieweditedit
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í.

Atrea User API — interní dokumentace