Tmavý režim
Uživatelé (/users)
Správa uživatelů, jejich rolí v aplikacích a resource-level oprávnění.
Kanonický administrátorský detail
Panel používá jako jediný zdroj pravdy:
http
GET /api/admin/users/{url-encoded-email}/detail
Authorization: Bearer <panel-token>Vyžaduje efektivní oprávnění users.view v aplikaci auth (globální superadmin má nadále bypass). Změnové operace jsou oddělené: users.settings, users.notifications a users.reset-password.
Odpověď obsahuje:
- globální
settings(locale,theme,timezone); - skutečný globální login/activity souhrn;
applicationspro všechny registrované aplikace se stabilními poliappCodeaappName;- efektivní přístup, efektivní role a případné preference;
- nejvýše 50 auditních událostí od nejnovější.
Existence profilu, role nebo preference se nikdy nepovažuje za přihlášení. Samotné otevření admin detailu žádnou aktivitu nezapisuje.
Globální nastavení se mění partial updatem:
http
PUT /api/admin/users/{url-encoded-email}/settings
Authorization: Bearer <superadmin-token>
Content-Type: application/json
{
"locale": "cs",
"theme": "dark",
"timezone": "Europe/Prague"
}locale musí být v /admin/languages; null obnoví systémový jazyk. timezone musí být platná IANA timezone; null obnoví systémové pásmo. Změna vloží auditní událost settings_update.
Resetovací e-mail se bezpečně vyžádá u ZITADELu:
http
POST /api/admin/users/{url-encoded-email}/password-reset
Authorization: Bearer <panel-token>
Content-Type: application/json
{}Odpověď je pouze { "sent": true }. API nikdy nevrací resetovací kód, heslo ani odkaz; ZITADEL pošle standardní notifikaci přes aktivní HTTP e-mail provider. Endpoint vyžaduje users.reset-password.
GET /users — seznam uživatelů
Vrátí všechny uživatele v systému.
http
GET /api/users
Authorization: Bearer <token>Auth: JWT + AppAdmin nebo SuperAdmin
Response
json
{
"success": true,
"data": [
{
"email": "jan.novak@firma.cz",
"active": true,
"createdAt": "2024-01-15T10:00:00.000Z"
},
{
"email": "petra.kratka@firma.cz",
"active": false,
"createdAt": "2024-01-16T09:00:00.000Z"
}
]
}| Pole | Popis |
|---|---|
email | Primární identifikátor |
active | Aktivní / deaktivovaný účet |
createdAt | Datum prvního zaregistrování |
POST /users — vytvoření uživatele
Předem vytvoří uživatele (admin může přidat uživatele dříve, než se poprvé přihlásí).
http
POST /api/users
Authorization: Bearer <token>
Content-Type: application/jsonAuth: JWT + AppAdmin
Request body
json
{
"email": "novy.uzivatel@firma.cz"
}Response
json
{
"success": true,
"data": {
"email": "novy.uzivatel@firma.cz",
"active": true,
"createdAt": "2024-01-20T12:00:00.000Z"
}
}GET /users/:email — starší přehled přístupů
Vrátí starší přehled rolí a resource overrides. Pro admin obrazovku, globální nastavení a aktivitu používejte výhradně kanonický GET /admin/users/:email/detail.
http
GET /api/users/jan.novak@firma.cz
Authorization: Bearer <token>Auth: JWT + AppAdmin nebo SuperAdmin
Response
json
{
"success": true,
"data": {
"email": "jan.novak@firma.cz",
"active": true,
"isSuperAdmin": false,
"applications": [
{
"code": "crm",
"name": "CRM Systém",
"isAppAdmin": false,
"roles": [
{
"id": 3,
"code": "editor",
"description": "Může editovat záznamy"
}
],
"resourceOverrides": [
{
"resourceType": "project",
"resourceId": "proj-42",
"permission": "projects.view",
"granted": true
}
]
}
]
}
}PATCH /users/:email/active — aktivace/deaktivace
Aktivuje nebo deaktivuje uživatelský účet.
http
PATCH /api/users/jan.novak@firma.cz/active
Authorization: Bearer <token>
Content-Type: application/jsonAuth: JWT + SuperAdmin
Request body
json
{
"active": false
}Response
json
{
"success": true,
"data": {
"email": "jan.novak@firma.cz",
"active": false
}
}Deaktivace
Deaktivovaný uživatel okamžitě ztratí přístup ke všem oprávněním. Permission check vrátí denied bez ohledu na role. Cache se nevyčistí automaticky — čekejte max 30 s nebo volejte /check/cache/clear.
GET /users/:email/apps/:appCode/roles — role uživatele
http
GET /api/users/jan.novak@firma.cz/apps/crm/roles
Authorization: Bearer <token>Auth: JWT + AppAdmin
Response
json
{
"success": true,
"data": [
{
"id": 3,
"code": "editor",
"description": "Může editovat záznamy",
"mdiIcon": "mdi-pencil"
}
]
}PUT /users/:email/apps/:appCode/roles — nastavení rolí
Nahradí kompletní sadu rolí uživatele v dané aplikaci.
http
PUT /api/users/jan.novak@firma.cz/apps/crm/roles
Authorization: Bearer <token>
Content-Type: application/jsonAuth: JWT + AppAdmin
Request body
json
{
"roleIds": [3, 5]
}Prázdné pole [] odebere všechny role.
Response
json
{
"success": true,
"data": {
"email": "jan.novak@firma.cz",
"appCode": "crm",
"roles": [3, 5]
}
}GET /users/:email/apps/:appCode/resources/:resourceType/:resourceId/permissions
Vrátí resource-level overrides pro konkrétní zdroj.
http
GET /api/users/jan.novak@firma.cz/apps/crm/resources/project/proj-42/permissions
Authorization: Bearer <token>Auth: JWT + AppAdmin
Response
json
{
"success": true,
"data": [
{
"permissionId": 5,
"code": "projects.view",
"granted": true
}
]
}PUT /users/:email/apps/:appCode/resources/:resourceType/:resourceId/permissions
Nastaví resource-level overrides pro konkrétní zdroj.
http
PUT /api/users/jan.novak@firma.cz/apps/crm/resources/project/proj-42/permissions
Authorization: Bearer <token>
Content-Type: application/jsonAuth: JWT + AppAdmin
Request body
json
{
"permissions": [
{ "permissionId": 5, "granted": true },
{ "permissionId": 6, "granted": false }
]
}Prázdné pole [] odebere všechny overrides pro daný zdroj.
Správa adminů
GET /users/admins/apps/:appCode — seznam app adminů
http
GET /api/users/admins/apps/crm
Authorization: Bearer <token>Auth: JWT (libovolný)
POST /users/admins/apps/:appCode — přidání app admina
http
POST /api/users/admins/apps/crm
Authorization: Bearer <token>
Content-Type: application/jsonAuth: JWT + SuperAdmin
json
{
"email": "appadmin@firma.cz"
}DELETE /users/admins/apps/:appCode/:email — odebrání app admina
http
DELETE /api/users/admins/apps/crm/appadmin@firma.cz
Authorization: Bearer <token>Auth: JWT + SuperAdmin
Správa superadminů
GET /users/superadmins/list
http
GET /api/users/superadmins/list
Authorization: Bearer <superadmin-token>POST /users/superadmins
http
POST /api/users/superadmins
Authorization: Bearer <superadmin-token>
Content-Type: application/json
{
"email": "superadmin@firma.cz"
}DELETE /users/superadmins/:email
http
DELETE /api/users/superadmins/superadmin@firma.cz
Authorization: Bearer <superadmin-token>WARNING
Posledního superadmina nelze odebrat. Systém musí mít vždy alespoň jednoho superadmina.