Homepage ukazuje tlačítka Registrace a Přihlášení pro nepřihlášené, nebo Pokračovat na účet (e-mail) pro přihlášené.
layout
OK
×
Registrace: vyplň nový e-mail + heslo (min 8 znaků) → přesměrování na /account, vidíš svůj e-mail.
logic
Čeká
OKBug×
Registrace s existujícím e-mailem: redirect zpět na /signup s hláškou „Účet s tímto e-mailem už existuje.".
logic
Čeká
OKBug×
Login se správnými údaji: redirect na /account; se špatnými údaji: redirect zpět na /login s hláškou „Nesprávný e-mail nebo heslo.".
logic
Čeká
OKBug×
Login: stejná hláška pro neexistující e-mail i pro špatné heslo (záměrné anti-enumeration).
security
Čeká
OKBug×
/account bez přihlášení → automatický redirect na /login.
logic
Čeká
OKBug×
Odhlášení tlačítkem na /account: redirect na /, session cookie smazaná, /account už nepřístupný.
logic
Čeká
OKBug×
Cookie atributy v DevTools → Application → Cookies: HttpOnly, SameSite=Lax, Secure (jen v produkci s HTTPS).
security
Čeká
OKBug×
D1 migrace na remote: před prvním ostrým testem spustit pnpm wrangler d1 migrations apply DB --remote — bez toho /signup spadne na chybějící tabulce users.
tests
Bug
Uzavřít×
Timing oracle při loginu: login s neexistujícím e-mailem vrátí response výrazně rychleji než login s existujícím e-mailem a špatným heslem (PBKDF2 verify běží jen u existujícího usera). Tracked pro Sprint 002 hardening.
security
Čeká
OKBug×
CSRF: endpointy /api/auth/{signup,login,logout} nemají CSRF token. SameSite=Lax mitiguje top-frame cross-origin POST, ale není explicit obrana. Tracked pro Sprint 002.
security
Čeká
OKBug×
Žádné unit testy pro password.verify, sessionCookie.parse a schema decode. Doporučuju HF v Sprint 001 nebo první run v Sprint 002.
tests
Čeká
OKBug×
Session TTL inkonzistence: změna env SESSION_TTL_DAYS změní cookie maxAge, ale DB session.expiresAt zůstává hardcoded 30 dní. Tracked pro Sprint 002.