Přeskočit na hlavní obsah

Users API

API reference pro endpointy správy uživatelů.

Přehled

Endpointy správy uživatelů umožňují administrátorům vytvářet, zobrazovat, aktualizovat a mazat uživatelské účty.

Oprávnění: Všechny endpointy vyžadují roli Admin.

Endpointy

GET /users

Seznam všech uživatelů s paginací.

Oprávnění: Admin

Query parametry:

  • page (volitelné): Číslo stránky (výchozí: 1)
  • pageSize (volitelné): Počet položek na stránku (výchozí: 50)

Response:

{
"success": true,
"data": {
"users": [
{
"id": 1,
"email": "[email protected]",
"name": "User Name",
"role": "Loader",
"two_factor_enabled": false,
"created_at": 1704067200
}
],
"pagination": {
"total": 10,
"page": 1,
"pageSize": 50,
"totalPages": 1
}
}
}

GET /users/search

Vyhledání uživatelů podle emailu nebo jména s volitelným filtrem podle role.

Oprávnění: Admin

Query parametry:

  • q (volitelné): Vyhledávací dotaz (email nebo jméno)
  • role (volitelné): Filtr podle role (Loader, Producer, Admin)
  • page (volitelné): Číslo stránky (výchozí: 1)
  • pageSize (volitelné): Počet položek na stránku (výchozí: 50)

Příklad:

GET /users/search?q=john&role=Loader&page=1&pageSize=10

Response:

{
"success": true,
"data": {
"users": [
{
"id": 1,
"email": "[email protected]",
"name": "John Doe",
"role": "Loader",
"two_factor_enabled": false,
"created_at": 1704067200
}
],
"pagination": {
"total": 1,
"page": 1,
"pageSize": 10,
"totalPages": 1
}
}
}

GET /users/:id

Získá detail uživatele.

Oprávnění: Admin

Response:

{
"success": true,
"data": {
"id": 1,
"email": "[email protected]",
"name": "User Name",
"role": "Loader",
"two_factor_enabled": true,
"two_factor_method": "TOTP",
"has_google": false,
"phone_number": null,
"created_at": 1704067200,
"passkey_count": 2
}
}

POST /users

Vytvoří nového uživatele.

Oprávnění: Admin

Request:

{
"email": "[email protected]",
"password": "SecurePassword123!",
"name": "New User",
"role": "Loader"
}

Response:

{
"success": true,
"data": {
"id": 2,
"email": "[email protected]",
"name": "New User",
"role": "Loader",
"created_at": 1704067200
}
}

Error Response (email již existuje):

{
"success": false,
"error": "USER_EXISTS",
"message": "Uživatel s tímto emailem již existuje"
}

PUT /users/:id

Aktualizuje informace o uživateli.

Oprávnění: Admin

Request:

{
"email": "[email protected]",
"name": "Updated Name",
"password": "NewPassword123!",
"role": "Producer"
}

Poznámka: Všechna pole jsou volitelná. Pouze poskytnutá pole budou aktualizována.

Response:

{
"success": true,
"data": {
"id": 1,
"email": "[email protected]",
"name": "Updated Name",
"role": "Producer"
}
}

Error Response (nelze změnit roli posledního Admina):

{
"success": false,
"error": "VALIDATION_ERROR",
"message": "Nelze změnit roli posledního Admina"
}

Error Response (nelze změnit svou vlastní roli z Admin):

{
"success": false,
"error": "VALIDATION_ERROR",
"message": "Nemůžete změnit svou vlastní roli z Admin"
}

DELETE /users/:id

Smaže uživatele.

Oprávnění: Admin

Response:

{
"success": true,
"data": {
"message": "User deleted successfully",
"deleted_user": {
"id": 1,
"email": "[email protected]"
}
}
}

Error Response (nelze smazat posledního Admina):

{
"success": false,
"error": "VALIDATION_ERROR",
"message": "Nelze smazat posledního Admina"
}

Business pravidla

Správa rolí

  • Ochrana posledního Admina: Nelze smazat nebo změnit roli posledního Admin uživatele
  • Sebeo ochrana: Admin nemůže změnit svou vlastní roli z Admin na jinou roli
  • Platné role: Pouze Loader, Producer a Admin jsou platné

Validace emailu

  • Email musí být ve validním formátu
  • Email je case-insensitive (uložen v lowercase)
  • Email musí být jedinečný

Validace hesla

  • Minimálně 8 znaků
  • Maximálně 128 znaků
  • Nesmí být v seznamu běžných hesel
  • Validováno pomocí funkce validatePassword()

Kódy chyb

  • VALIDATION_ERROR - Neplatný vstup (formát emailu, síla hesla, role)
  • USER_EXISTS - Email již existuje
  • EMAIL_EXISTS - Email již použit jiným uživatelem
  • NOT_FOUND - Uživatel nenalezen
  • FORBIDDEN - Nedostatečná oprávnění (není Admin)
  • INTERNAL_ERROR - Chyba serveru

Související témata