# Role a oprávnění

Aktuální přehled rolí používaných v aplikaci.

## Aktivní role

| Role | Kód v systému | Typické použití |
|------|---------------|-----------------|
| Superadmin | `superadmin` | systémová správa napříč školami |
| Admin školy | `admin` | správa jedné školy |
| Učitel | `editor` | práce s žáky, výkony a přehledy |
| Čtenář | `reader` | omezený read-only přístup |
| Žák | `zak` | přístup k vlastním datům |

## Praktický význam rolí

### `superadmin`

- správa všech škol,
- globální uživatelé,
- monitoring, audit, backup a restore,
- systémové maintenance operace.

### `admin`

- správa uživatelů vlastní školy,
- správa žáků, tříd a školních dat,
- školní exporty a běžné administrátorské zásahy.

### `editor`

- běžný učitel,
- práce s výkony, třídami, žáky a přehledy ve scope školy,
- bez systémové správy.

### `reader`

- legacy read-only role,
- individuální žákovské účty se často generují s rolí `reader` a vazbou na `Zak.user_id`,
- v UI se chovají jako žákovský kontext (vlastní data, self-join do výzev, mimoškolní důkaz),
- **neplést** s plným učitelským `editor`.

### `zak`

- explicitní žákovský kód role v novějších flow,
- zobrazení vlastních dat a návazných přehledů podle nastavení školy,
- v praxi stejný „studentský“ surface jako propojený `reader`.

## Důležité auth zkratky v aplikaci

Backend používá helpery, které několik rolí slučují:

- `is_editor()` povoluje `editor`, `admin`, `superadmin`,
- `is_admin()` povoluje `admin`, `superadmin`,
- `is_superadmin()` povoluje jen `superadmin`.

To znamená, že některé učitelské nebo editační obrazovky jsou dostupné i adminům a superadminům, i když UI může být primárně psané pro učitele.

## Rychlá matice

| Funkce | superadmin | admin | editor | reader | zak |
|--------|:----------:|:-----:|:------:|:------:|:---:|
| správa všech škol | ✅ | ❌ | ❌ | ❌ | ❌ |
| správa vlastní školy | ✅ | ✅ | ❌ | ❌ | ❌ |
| správa uživatelů | ✅ | ✅ | ❌ | ❌ | ❌ |
| práce s výkony | ✅ | ✅ | ✅ | ❌ | ❌ |
| Quest Arena — prohlížení Moje výzvy / odznaky | ✅ | ✅ | ✅ | ⚠️ | ⚠️ |
| Quest Arena — katalog / vypsání / enrollment | ✅ | ✅ | ⚠️ | ❌ | ❌ |
| Quest Arena — self-join (Zapojit se) | ❌ | ❌ | ❌ | ⚠️ | ⚠️ |
| Režim v TV (úleva) — zobrazení / úprava | ✅ | ✅ | ✅ | ❌ | ❌ |
| prohlížení přehledů a žebříčků | ✅ | ✅ | ✅ | ⚠️ | ⚠️ |
| vlastní studentská data | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ✅ |

`⚠️` znamená, že záleží na konkrétním účtu, propojení a oprávnění (např. `can_manage_manual_challenges` u učitele).

Quest Arena detail: [08-vyzvy-souteze-odznaky.md](08-vyzvy-souteze-odznaky.md). TV úleva: [03-sprava-zaku.md](03-sprava-zaku.md#režim-v-tv-úleva).

## Viditelnost jmen (anonymita)

Kdo vidí plná jména vs. štítek **Chlapec 7.B** / **Dívka 8.A** popisuje kapitola
[11-bezpecnost-a-anonymita.md](11-bezpecnost-a-anonymita.md).

## Nejčastější problémy s rolemi

### Nevidím očekávanou položku v menu

Menu je role-based. Nejdřív ověřte, jakou roli má váš účet.

### Po změně role stále vidím starý stav

Odhlaste se a přihlaste znovu. Pokud to nepomůže, zkuste obnovit stránku bez cache.

### Žák vidí málo nebo nic

Zkontrolujte, zda je účet opravdu propojený s konkrétním žákem a správnou školou.
