Přeskočit obsah

Správa uživatelů (zaměstnanců)

Přehled

Každá firma má vlastní seznam zaměstnanců. Správce (company_admin) spravuje přístupová práva přes systém pracovních pozic. Nový uživatel se přihlásí k firmě přes IČO, vybere pozici a čeká na schválení — do té doby se nemůže přihlásit.


Datový model

job_positions (nová tabulka)

Pole Typ Popis
id UUID PK
company_id UUID FK → companies (nullable) NULL = systémová šablona
name VARCHAR(100) Název pozice
is_enabled BOOL default true Admin může zakázat pro svou firmu (ne smazat systémovou)
is_system BOOL default false Systémové nelze smazat ani přejmenovat
sort_order INT Pořadí v seznamu
can_approve_users BOOL default false Může schvalovat čekající uživatele
can_view_users BOOL default false Vidí seznam zaměstnanců firmy
can_manage_users BOOL default false Může měnit pozice, aktivovat/deaktivovat uživatele
can_assign_apps BOOL default false Může přidělovat aplikace uživatelům
can_use_storage BOOL default false Přístup k zálohovacímu úložišti (storage token)
can_use_chat BOOL default true Přístup k chatu

Rozšíření users

Pole Typ Popis
job_position_id UUID FK → job_positions (nullable) Aktuální pozice
registration_status VARCHAR(20) default 'active' active / pending / rejected
approved_by UUID FK → users (nullable) Kdo schválil
approved_at DATETIME (nullable) Kdy schválil
rejection_reason TEXT (nullable) Důvod odmítnutí

Systémové šablony pozic

Seeded při inicializaci (company_id=NULL, is_system=true). Firma může zakázat (is_enabled=false per firma pomocí company_position_overrides) nebo přidat vlastní.

Pozice approve view manage apps storage chat
Ředitel
IT správce
Personalista
Účetní
Obchodní zástupce
Asistent
Skladník
Technik
Zedník
Řidič
Ostatní

API endpointy

Pozice

GET  /org/positions              → seznam dostupných pozic pro firmu (system + custom)
POST /org/positions              → vytvoř vlastní pozici (company_admin)
PATCH /org/positions/{id}        → uprav pozici / enable/disable (company_admin)

Registrace zaměstnance

POST /auth/register-employee     → registrace do existující firmy (ICO, email, heslo, position_id)
                                   → vytvoří uživatele s registration_status='pending', is_active=False
                                   → vrátí {"status": "pending", "message": "..."}

Správa uživatelů

GET  /org/users                  → seznam uživatelů firmy (dle oprávnění volajícího)
GET  /org/users/pending          → čekající uživatelé (can_approve_users nebo admin)
POST /org/users/{id}/approve     → schval + nastav pozici (can_approve_users nebo admin)
                                   → NELZE schválit company_admin přes tento endpoint
POST /org/users/{id}/reject      → odmítni s důvodem
PATCH /org/users/{id}            → změň pozici / aktivuj/deaktivuj (can_manage_users nebo admin)
GET  /org/users/{id}             → detail uživatele

Pravidla schvalování

  1. company_admin může schválit kohokoliv v rámci firmy
  2. Uživatel s can_approve_users=True může schválit jakoukoliv pozici kromě company_admin
  3. Delegovaný schvalovatel nemůže schválit jiného delegovaného schvalovatele pokud target má can_manage_users=True (ochrana před eskalací)
  4. registration_status='pending' + is_active=False = blokovaný login
  5. Po schválení: is_active=True, registration_status='active'
  6. Po odmítnutí: registration_status='rejected' (lze znovu zaregistrovat s jiným emailem)

Oprávnění a storage token

Endpoint POST /storage/token kontroluje: - system_role in (super_admin, company_admin) → OK - NEBO job_position.can_use_storage=True → OK - Jinak → 403 "Nemáte povolení k používání úložiště"


Launcher UI — UsersScreen

Dostupná přes menu "Uživatelé ▾" v navigaci (viditelná pokud can_view_users NEBO admin).

Záložky dle oprávnění

Záložka Kdo vidí Obsah
Čekající can_approve_users nebo admin seznam pending + tlačítka Schválit/Odmítnout
Uživatelé can_view_users nebo admin tabulka aktivních uživatelů (jméno, email, pozice, status)
Pozice company_admin správa pozic — enable/disable systémových, přidat vlastní
Můj účet všichni vlastní profil, pozice, stav účtu

Schvalovací flow

  • Klik "Schválit" → vybrat pozici (dropdown) → potvrdit
  • Klik "Odmítnout" → zadat důvod → potvrdit
  • Notifikace při novém pending uživateli (refresh při otevření obrazovky)

Launcher — Registrace zaměstnance

LoginScreen dostane záložky: Přihlásit | Registrovat se

Registrační formulář: 1. IČO firmy → ověření existence (live) 2. Výběr pozice ze seznamu (dropdown) 3. Jméno, e-mail, heslo 4. Odeslat → "Čekáme na schválení správce firmy"

Login s pending účtem → chybová hláška: "Váš účet čeká na schválení správce firmy."