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í¶
company_adminmůže schválit kohokoliv v rámci firmy- Uživatel s
can_approve_users=Truemůže schválit jakoukoliv pozici kroměcompany_admin - Delegovaný schvalovatel nemůže schválit jiného delegovaného schvalovatele
pokud target má
can_manage_users=True(ochrana před eskalací) registration_status='pending'+is_active=False= blokovaný login- Po schválení:
is_active=True,registration_status='active' - 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."