TOTP tajne se više ne čuvaju kao čist tekst u koloni korisnici.totp_tajna.
Uvedene auth.Sifruj/auth.Desifruj (AES-256-GCM) u internal/auth/kripto.go.
sqliteKorisniciRepo šifruje pri SacuvajTotpTajnu i dešifruje pri čitanju
(DohvatiPoImenu/PoID/Lista), pa ostatak programa i dalje vidi čistu tajnu.
Ključ je 32-bajtni NTECH_TOTP_KEY (base64), učitava se ili generiše pri
pokretanju (ucitajTotpKljuc) i upisuje u ntech.env van baze. Stare nešifrovane
tajne se tolerišu pri čitanju (fallback) i jednokratno šifruju pri startu
(ZasifrujPostojeceTotp). RequireAuth i Handler provode ključ do repo-a.
Dodati prvi testovi u repozitorijumu (internal/auth/kripto_test.go).
Bezbednost / dozvole:
- Nov RequireDozvola(proveri, akcija) middleware (po uzoru na RequireAdmin):
na odbijanje redirekt na /dashboard sa flash porukom umesto golog 403
- 10 "pregled" ruta (prodaja, servis, klijenti, dobavljači, nabavke) prešlo
na deklarativnu proveru na nivou rute
- Uklonjene inline pregled-provere iz handlera — provera je sad na jednom
mestu po ruti, vidljiva u ruteru
Backup podešavanja:
- Neispravan unos (van opsega ili ne-broj) više se ne preskače tiho;
prikazuje se jasna greška i ne prikazuje se lažno "sačuvano"
- Hvata se greška pri čuvanju u bazu (uklonjen progutani _ =)
Šabloni:
- "Premesti" dropdown izvučen u jedan {{define "premestiMeni"}} partial
(više nije dupliran u tabeli i mobilnoj kartici)
- Dodat dict helper u FuncMap saSidebar šablona radi prosleđivanja više
vrednosti partialu; standalone šabloni namerno ostaju bez izmene