Commit Graph

34 Commits

Author SHA1 Message Date
Dasko ffb77ed122 feat(auth): šifrovanje TOTP tajni u mirovanju (AES-256-GCM)
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).
2026-06-12 19:26:46 +02:00
Dasko 726a1dbbf7 Dodata zahtevajDozvolu metoda koja zamenjuje dupliranu proveru dozvola u handlerima.
Uvedena `AssetV` promenljiva za cache-busting statičkih fajlova, koja se postavlja pri svakom pokretanju.
Kreiran pogled `klijent_prikaz` (migracija 038) za jedinstveno prikazivanje imena klijenta, čime se eliminiše ponavljanje COALESCE logike u upitima.
Izvučena `dodeliOpcijeKorisnika` funkcija u korisnici.go radi DRY.
Zamenjeni inline stilovi u HTML šablonima CSS klasama (`.polje-labela`, `.obavezno`, `.pomocni-tekst`, `.tabela`, `.kartica-tabela`, `.prazno-stanje`).
Dodat `width: 100%` na inpute i `resize: vertical` na textarea u main.css.
2026-06-12 00:43:58 +02:00
Dasko cf13d0fe15 Code-review popravke: RequireDozvola middleware, validacija backupa, dedup partiala
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
2026-06-09 01:26:10 +02:00
Dasko 53432c8c41 Magacin premeštanje, backup podešavanja, čišćenje RBAC sistema
Magacin:
  - Dodato premeštanje artikla u drugu kategoriju (dugme + nativni
    <details> meni, bez JS-a; radi na desktopu i mobilnom)
  - Endpoint POST /magacin/premesti/{id} uz proveru dozvole artikal.premesti

  Backup:
  - Nova podešavanja: interval automatskog backupa i broj kopija (rotacija)
  - Periodični backup uz onaj pri pokretanju; interval se čita iz baze
  - Migracija 037_backup_podesavanja.sql

  Dozvole (RBAC):
  - Dodate kartice koje su nedostajale (dashboard.prihod, prodaja.storno,
    podesavanja.login_pozadina, tema.lokalno) — popravljen i bug gde su se
    gasile pri svakom čuvanju matrice
  - Aktivirana kontrola pregleda za prodaju, servis, klijente i dobavljače
    (provera u handlerima + skrivanje iz sidebara)
  - Uklonjene mrtve/obmanjujuće dozvole iz matrice i sveAkcije (korisnici,
    podsetnici, artikal.pregled, kategorija.izmeni, tema.globalno,
    podesavanja.app_pozadina); sveAkcije 47 -> 34
  - Čišćenje zastarelih redova (siročića) u tabeli dozvola pri startu

  Ostalo:
  - Statički fajlovi: embed celog web/static i ispravan MIME za .js/.css
  - Keš šablona: dodat admin_dozvole (stranica Dozvole se nije otvarala)
  - Sidebar accordion: radi i skupljen i proširen, međusobno isključiv
2026-06-09 00:55:15 +02:00
Dasko a99920d102 Popravka sidebara: kolaps, podmeni i HTMX navigacija 2026-06-08 19:29:17 +02:00
Dasko 16b993933c Bezbednosni audit i refaktoring: HP popravke, RBAC, flash poruke, go:embed, CSP 2026-06-07 22:41:09 +02:00
Dasko 301bcaf5c4 Bezbednost: rešeno 7 kritičnih nalaza (HP-01 do HP-07) 2026-06-07 22:41:09 +02:00
Dasko 8cec26a03f Refaktoring: uklanjanje globalne teme i app pozadine, dozvole u podešavanja, UI ispravke
- Uklonjena globalna tema i pozadinska slika aplikacije (ostala samo lična pozadina po korisniku)
- Uklonjena animacija treperenja pozadine pri navigaciji; dodat sessionStorage za instant prikaz
- Dozvole premeštene iz sidebar-a u Podešavanja → Sistem; vidljive i adminu (samo Radnik kolona)
- Admin može menjati samo dozvole uloge Radnik, superadmin menja i Radnik i Admin
- Zatamnjivanje kartice NTech na stranici prijave — novi slider u Podešavanja → Izgled
- Upozorenje na dashboard-u (kritične zalihe) — popravljen kontrast boje
2026-06-06 21:07:01 +02:00
Dasko 5d94ea34cf Izmena u radu tema 2026-06-06 17:47:52 +02:00
Dasko 6a3500c25a Podešavanja: accordion podmeni, podsekcije Opšte/Izgled/Sistem, glassmorphism prijava, kontrast teksta 2026-06-06 02:58:12 +02:00
Dasko 8def13e855 Podešavanja: pozadinska slika i glass efekt za aplikaciju sa live preview sliderom 2026-06-05 23:49:05 +02:00
Dasko 9af712edd3 Flash poruke: toast notifikacije umesto ?greska= i ?sacuvano= u URL-u 2026-06-05 23:15:49 +02:00
Dasko 2b3636528f Bezbednost: ispravke kontrole pristupa u admin i handler sloju 2026-06-05 22:41:20 +02:00
Dasko ccc08aee08 Dodato go:embed - disk-first logika za statičke fajlove i šablone 2026-06-04 20:14:03 +02:00
Dasko 08b9359a76 Embed implementacija, animacije, sidebar hover 2026-06-04 02:50:48 +02:00
Dasko 4b7ed36473 Ispravke — bezbednost, CSS teme, handleri, sidebar, servis forma 2026-06-03 23:13:15 +02:00
Dasko d68aaba787 Evidencija prijava — login_istorija tabela, logovanje svih pokušaja, stranica istorije po korisniku, WebAuthn shema 2026-06-03 22:05:00 +02:00
Dasko ed7ae605b2 Bezbednost — security headers, fail2ban logovanje, bruteforce zaštita, CSRF zaštita 2026-06-03 21:38:16 +02:00
Dasko 974d76360a Optimizacije — SQLite WAL, template keš, gzip kompresija, build skript 2026-06-03 21:18:12 +02:00
Dasko 2401f6d5ec Ispravka QR koda za 2FA — generisanje na serveru kao base64 PNG 2026-06-02 22:29:53 +02:00
Dasko f918b76542 Podešavanja — adresa, telefon, PIB firme; priznanica sa podacima firme i klijenta; ispravka prihoda na dashboardu 2026-06-02 18:57:52 +02:00
Dasko a6c4f429e4 Dashboard — pravi podaci, prihod meseca, poslednje prodaje, datum umesto badge 2026-06-02 18:29:59 +02:00
Dasko 5c744ed15e Prodaja — ispravka duplikacije stavki, provera stanja po artiklu u realnom vremenu 2026-06-02 18:24:54 +02:00
Dasko def84e1a69 Dodavanje modula prodaje — lista, forma, detalji, provera stanja, vraćanje pri brisanju 2026-06-02 17:53:50 +02:00
Dasko 7800c3842d feat: dodata podrška za servise
Dodana osnovna funkcionalnost za upravljanje servisima:

- Novi model (`internal/model/service.go`)
- SQLite repository (`internal/db/sqlite/service.go`)
- Handler (`internal/handler/service.go`)
- Tri nove stranice (lista, detalji, forma)

Izmenjeni:
- main.go
- repository.go
- utils.go
- handler.go
2026-06-02 00:15:30 +02:00
Dasko f05c93edd2 Dodavanje modula klijenata — lista, forma, izmena, brisanje, ispravka migracije 2026-06-01 23:40:52 +02:00
Dasko bdf1069fbd Dodavanje modula dobavljača i nabavki 2026-06-01 23:21:14 +02:00
Dasko b9d960a4a0 Uklanjanje nabavne cene iz artikala, responsive dashboard, dodavanje tabela za nabavke 2026-06-01 20:52:59 +02:00
Dasko b0ea50578f Magacin — forma puna širina, responsive popravke 2026-06-01 02:49:46 +02:00
Dasko 8cc54a7fc2 Popravka greške u topbaru, responsive sidebar, tačkice za teme 2026-06-01 02:04:50 +02:00
Dasko 91889b7711 Promena teme klikom na tačkice u topbaru 2026-06-01 01:45:24 +02:00
Dasko 8a9579e201 Dodavanje stranice podešavanja, CSS teme, logo zona 2026-06-01 01:40:29 +02:00
Dasko acf8cada0e Dodavanje podešavanja u bazu, logo zona sa tri opcije 2026-06-01 01:16:37 +02:00
Dasko 3b9e0c081a Dodavanje base šablona, sidebara, topbara i dashboard stranice 2026-06-01 01:11:05 +02:00