Dasko
|
b112d46e4e
|
feat(2fa): rezervni (jednokratni) kodovi za 2FA
Alternativa TOTP-u kada uređaj nije dostupan. Po CLAUDE.md specifikaciji:
10 kodova pri aktivaciji, čuvani kao bcrypt heš.
Backend:
- migracija 039 (tabela rezervni_kodovi, FK CASCADE)
- auth.GenerisiRezervneKodove (Crockford base32, XXXX-XXXX) + NormalizujRezervniKod
- RezervniKodoviRepository (Zameni/Iskoristi/BrojPreostalih/Obrisi) + SQLite impl
- žičenje u Handler (+ reinicijalizuj)
Prijava:
- VerifikujTotp prvo proba TOTP, pa rezervni kod (isto polje); kod je jednokratni
- totp_provera.html: input opušten (slova/crtica), napomena o rezervnom kodu
Profil:
- aktivacija generiše i prikazuje kodove JEDNOM; dugme Regeneriši; brojač preostalo X/10
- deaktivacija briše kodove
Testovi: auth (generisanje/format/normalizacija), repo (jednokratnost/regeneracija),
prijava rezervnim kodom end-to-end. Ukupno 36 test funkcija.
|
2026-06-12 23:44:09 +02:00 |
|
Dasko
|
5da055a949
|
test: integracioni testovi tokova prijave
internal/handler/prijava_test.go — Handler nad privremenom SQLite bazom (prave
migracije), TemplatesFS na korenu repo-a za standalone render. Pokrivено:
- uspešna prijava (303 -> /dashboard + sesijski kolačić)
- pogrešna lozinka (greska=1, bez kolačića, zabeležen neuspeh)
- nepostojeći korisnik i neaktivan nalog (bez sesije)
- zaključavanje IP-a posle 5 neuspeha (ni ispravna lozinka ne daje sesiju)
- TOTP tok: prijava -> /prijava/totp -> validan kod -> /dashboard (potvrđeno)
- pogrešan TOTP kod (greska=1, sesija ostaje nepotvrđena)
Ukupno 28 test funkcija u repozitorijumu.
|
2026-06-12 23:09:55 +02:00 |
|