Přeskočit obsah

Intent: Auth & Role Gating

Status: Implemented · Updated: 2026-05-14 · Pilot for I³ methodology.

2026-05-14: Auth zjednodušen na Magic Link only (žádný OAuth provider, žádné heslo). Detaily v ADR auth-magic-link-only + design doc.

Problém

Učitelé a ředitelka Sofie pracují s daty o žácích (docházka, evidence, témata) — citlivá data, GDPR, různé role školy mají různý rozsah viditelnosti. Bez kontroly přístupu by rodič mohl vidět cizí dítě, asistent by mohl editovat data mimo svou třídu, neschválený účet by se dostal do systému. Druhotně: učitelé chtějí přihlášení bez friction — žádné heslo k zapamatování, žádný password reset flow.

Kdo to chce + jak ho poznáme

  • Primární: každý uživatel aplikace (učitel, ředitel, kancelář — viz U-01..U-05 v USERS.md).
  • Stakeholder: Tomáš (PO + ředitel) — odpovídá za GDPR a za to, kdo má jaký přístup.
  • Kontext: ráno před hodinou na mobilu (učitel), kdykoli z desktopu (ředitel/kancelář), občas z domu na PC (rodič v budoucí fázi).

Definice úspěchu

  • Anonymní návštěvník neprojde na žádnou chráněnou stránku — vždy redirect na /login.
  • Schválený staff (teacher / director / office) projde na aplikaci.
  • Neschválený / nový účet (pending) skončí na /pending, nevidí žádná školní data.
  • Role rodiče (parent) v MVP ještě nemá UI → také /pending (placeholder).
  • Přihlášení přes Magic Link (e-mail) funguje bez hesla — jeden e-mail input, jedno tlačítko, klik z e-mailu = session.
  • Demo režim: rychlé tlačítka „Přihlásit jako učitel X" pro lokální dev. Gated KOSMO_DEMO_MODE=true, v produkci skryté.

Out-of-scope

  • Self-signup / registrace bez Tomášova schválení (nový účet startuje vždy pending; Tomáš ručně schvaluje na teacher / parent).
  • Apple Sign In — zamítnuto ($99/rok + JWT overhead, magic link pokryje stejný UX). Viz ADR auth-magic-link-only.
  • Google / Microsoft SSO — odloženo. Až bude měřitelná potřeba (staff stěžuje na friction, nebo žáci dostanou Workspace), přidá se OAuth tlačítko vedle magic linku bez breaking change.
  • Password login — shozen v produkci. INV-AUTH-05 garantuje magic-link-only flow.
  • Rodičovský portál UI (Fáze 2 — login flow je ale připravený).
  • Multi-tenant / multi-school (Sofie = jedna škola).
  • Bearer-token API auth pro externí klienty (infrastruktura nachystaná v middleware, ale nepoužitá).
  • 2FA (Supabase nabízí, není MVP).