Tmavý režim
Role & Oprávnění
Správa rolí a oprávnění per-aplikaci. Vyžaduje AppAdmin nebo SuperAdmin.
Oprávnění (Permissions)
GET /applications/:appCode/permissions — seznam oprávnění
Vrátí stromovou strukturu oprávnění (s children).
http
GET /api/applications/crm/permissions
Authorization: Bearer <admin-token>Response
json
{
"success": true,
"data": [
{
"id": 1,
"code": "documents",
"description": "Správa dokumentů",
"type": "binary",
"groupName": "Dokumenty",
"parentPermissionId": null,
"children": [
{
"id": 2,
"code": "documents.read",
"type": "binary",
"groupName": "Dokumenty",
"parentPermissionId": 1,
"children": []
},
{
"id": 3,
"code": "documents.edit",
"type": "tiered",
"groupName": "Dokumenty",
"parentPermissionId": 1,
"children": []
}
]
}
]
}POST /applications/:appCode/permissions — vytvoření oprávnění
http
POST /api/applications/crm/permissions
Authorization: Bearer <admin-token>
Content-Type: application/jsonjson
{
"code": "documents.edit",
"description": "Editace dokumentů",
"type": "tiered",
"groupName": "Dokumenty",
"parentPermissionId": 1
}| Pole | Typ | Povinné | Popis |
|---|---|---|---|
code | string | ✓ | Unikátní kód v rámci aplikace |
type | "binary" | "tiered" | ✓ | Typ oprávnění |
description | string | ✗ | Popis oprávnění |
groupName | string | ✗ | Skupina pro UI zobrazení |
parentPermissionId | number | ✗ | ID nadřazeného oprávnění (UI tree) |
PUT /applications/:appCode/permissions/:id — aktualizace
http
PUT /api/applications/crm/permissions/3
Authorization: Bearer <admin-token>
Content-Type: application/jsonjson
{
"description": "Nový popis",
"groupName": "Dokumenty v2"
}code a type nelze měnit po vytvoření.
DELETE /applications/:appCode/permissions/:id — smazání
http
DELETE /api/applications/crm/permissions/3
Authorization: Bearer <admin-token>WARNING
Smazání oprávnění odebere všechna přiřazení tohoto oprávnění rolím.
Role
GET /applications/:appCode/roles — seznam rolí
http
GET /api/applications/crm/roles
Authorization: Bearer <admin-token>Response
json
{
"success": true,
"data": [
{
"id": 1,
"code": "viewer",
"description": "Může číst záznamy",
"mdiIcon": "mdi-eye",
"createdAt": "2024-01-10T08:00:00.000Z"
},
{
"id": 2,
"code": "editor",
"description": "Může editovat záznamy",
"mdiIcon": "mdi-pencil",
"createdAt": "2024-01-10T08:05:00.000Z"
}
]
}GET /applications/:appCode/roles/:id — detail role s oprávněními
http
GET /api/applications/crm/roles/2
Authorization: Bearer <admin-token>Response
json
{
"success": true,
"data": {
"id": 2,
"code": "editor",
"description": "Může editovat záznamy",
"mdiIcon": "mdi-pencil",
"permissions": [
{
"id": 2,
"code": "documents.read",
"type": "binary",
"accessLevel": "allowed"
},
{
"id": 3,
"code": "documents.edit",
"type": "tiered",
"accessLevel": "edit"
}
]
}
}POST /applications/:appCode/roles — vytvoření role
http
POST /api/applications/crm/roles
Authorization: Bearer <admin-token>
Content-Type: application/jsonjson
{
"code": "manager",
"description": "Manažer — plný přístup",
"mdiIcon": "mdi-account-supervisor"
}| Pole | Typ | Povinné | Popis |
|---|---|---|---|
code | string | ✓ | Unikátní kód role v aplikaci |
description | string | ✗ | Popis role |
mdiIcon | string | ✗ | Material Design Icons název (pro UI) |
PUT /applications/:appCode/roles/:id — aktualizace role
http
PUT /api/applications/crm/roles/2
Authorization: Bearer <admin-token>
Content-Type: application/jsonjson
{
"description": "Aktualizovaný popis",
"mdiIcon": "mdi-pencil-box"
}DELETE /applications/:appCode/roles/:id — smazání role
http
DELETE /api/applications/crm/roles/2
Authorization: Bearer <admin-token>WARNING
Smazání role odebere tuto roli všem uživatelům, kteří ji mají přiřazenou.
Přiřazení oprávnění roli
PUT /applications/:appCode/roles/:id/permissions
Nahradí kompletní sadu oprávnění role. Pošlete celý seznam — co nepošlete, to se odebere.
http
PUT /api/applications/crm/roles/2/permissions
Authorization: Bearer <admin-token>
Content-Type: application/jsonRequest body
json
{
"permissions": [
{ "permissionId": 1, "accessLevel": "allowed" },
{ "permissionId": 2, "accessLevel": "edit" },
{ "permissionId": 3, "accessLevel": "view" }
]
}| Pole | Povinné | Validní hodnoty |
|---|---|---|
permissionId | ✓ | ID oprávnění ze stejné aplikace |
accessLevel | ✓ | "allowed" (binary), "edit" nebo "view" (tiered) |
Prázdné pole [] odebere všechna oprávnění role.
Response
json
{
"success": true,
"data": {
"roleId": 2,
"permissions": [
{ "permissionId": 1, "accessLevel": "allowed" },
{ "permissionId": 2, "accessLevel": "edit" }
]
}
}Pravidla a omezení
- Kód oprávnění musí být unikátní v rámci aplikace
- Kód role musí být unikátní v rámci aplikace
accessLevelprobinaryoprávnění musí být"allowed"accessLevelprotieredoprávnění musí být"edit"nebo"view"parentPermissionIdmusí ukazovat na oprávnění stejné aplikace- Smazání oprávnění nebo role je nevratné
Doporučené konvence pojmenování
# Oprávnění — tečkovaná hierarchie
contacts.read
contacts.edit
contacts.delete
reports.view
reports.export
admin.access
# Role — popisné názvy
viewer
editor
manager
admin