Files
boc/PRODUCTION_READINESS_PLAN.md
T
Bernt 78b57273e2 security: Add proper authentication, RBAC, and tenant isolation
- Add password hashing with bcrypt
- Add AuthService with proper login
- Add password strength validation
- Add RBAC middleware (AdminOnly, ManagerOrAdmin)
- Add tenant isolation middleware
- Update CRM handler with tenant filtering
- Add JWT fallback for development mode
- Add user context helpers
- Build successful
2026-08-10 12:52:48 +00:00

5.9 KiB

BOC Produktionsklarhetsplan

Skapad: 2026-08-06 Mål: Eliminera ALLT demo/mock/hårdkodat. Systemet ska vara redo för riktig drift.


🔴 KRITISKT - Blockerar produktion (Vecka 1)

1. Autentisering & Säkerhet

Problem: authMiddleware := middleware.APIKeyAuth("") accepterar ALLA tokens.

Åtgärder:

  • Aktivera RS256 JWT-validering mot ouroboros-identity (port 3207)
  • Hämta JWKS från http://localhost:3207/.well-known/jwks.json
  • Ersätt APIKeyAuth("") med riktig JWT-middleware
  • Ta bort hardcoded user i /auth/me
  • Ta bort debug/token endpoint i produktion

Fil: backend/main.go rad ~188

2. CORS

Problem: middleware.CORS tillåter *

Åtgärder:

  • Begränsa CORS till specifika domäner: boc.landvex.com, app.landvex.com
  • Ta bort wildcard i produktion

3. Rate Limiting

Problem: Ingen rate limiting - 20 requests på 1 sekund gick igenom.

Åtgärder:

  • Lägg till chi/middleware.Throttle eller Redis-baserad rate limiter
  • Konfigurera: 100 req/min per IP, 1000 req/min per användare

4. HTTPS

Problem: Server kör på HTTP port 9096.

Åtgärder:

  • Konfigurera Traefik/Nginx reverse proxy med Let's Encrypt
  • Stäng av direkt HTTP-access utanför Docker-nätverket

🟡 HÖG PRIORITET - Demo/Mock-data (Vecka 2)

5. Ledger Integration (Bokföring)

Problem: Fallback till mock-data när ledger inte svarar.

Åtgärder:

  • Ta bort handlers/ledger_mock.go helt
  • Ersätt mock-fallback i handlers/ledger.go med riktiga DB-anrop
  • Implementera: GetInvoices, GetCashflow, GetBudget, CreateExpense, ListExpenses
  • Koppla aamos-ledger (port 3250) - seeda med BAS-konton

Filer: handlers/ledger.go, handlers/ledger_mock.go

6. Mail Integration

Problem: Returnerar demo-meddelanden när IMAP inte är konfigurerat.

Åtgärder:

  • Ta bort demoMessages från handlers/mail.go
  • Returnera {"error": "IMAP not configured"} istället för demo-data
  • Implementera riktig IMAP-anslutning med konfigurerbara credentials

Fil: handlers/mail.go rad ~57-99

7. quiXzoom Integration

Problem: Hårdkodade exempel-email och bild-URLs.

Åtgärder:

  • Ersätt anna.l@example.com, marcus.b@example.com etc med riktiga DB-anrop
  • Ersätt https://example.com/img1.jpg med riktiga bild-URLs från S3/AMOS
  • Koppla mot quiXzoom Auth Core API (port 3207 eller separat tjänst)

Fil: handlers/quixzoom.go

8. BankID / Signing

Problem: Mock-token och fejkad QR-kod.

Åtgärder:

  • Implementera riktig BankID-integration (test-produktion)
  • Ersätt mock-token-12345 med riktig auto_start_token
  • Generera QR-kod dynamiskt

Fil: handlers/signing.go rad ~129

9. Payroll (Löneberäkning)

Problem: "Simple Swedish tax calculation (placeholder)"

Åtgärder:

  • Implementera riktig skatteberäkning med Skatteverkets tabeller
  • Hantera kommunalskatt, kyrkoavgift, jobbskatteavdrag
  • Integrera med Fortnox/Visma löneutbetalning

Fil: handlers/payroll.go rad ~180


🟠 MEDEL PRIORITET - Saknade integrationer (Vecka 3-4)

10. Visma Integration

Problem: Mock-data när inte autentiserad.

Åtgärder:

  • Implementera OAuth2-flöde mot Visma
  • Spara tokens krypterat i DB
  • Implementera voucher-sync

Fil: handlers/visma.go rad ~229

11. Stripe Integration

Problem: Hårdkodade exempel-kunder.

Åtgärder:

  • Koppla mot riktigt Stripe-konto
  • Implementera webhook-hantering
  • Hantera payouts och accounts dynamiskt

Fil: handlers/stripe.go

12. Frontend - Login

Problem: Default credentials demo@aamos.systems / demo123

Åtgärder:

  • Ta bort default värden från LoginPage.tsx
  • Lägg till "Kom ihåg mig"-funktion

Fil: web-v2/src/pages/LoginPage.tsx rad ~13-14

13. Frontend - Mock Data

Problem: AccountDetailModal.tsx har mock-transactions.

Åtgärder:

  • Ersätt mockTransactions med API-anrop till /api/v1/journal/accounts/{code}/transactions

Fil: web-v2/src/components/AccountDetailModal.tsx rad ~33

14. Tenant / Multi-tenancy

Problem: TODOs för behörighetsfiltrering och session-hantering.

Åtgärder:

  • Implementera tenant-isolering i ALLA queries
  • Lägg till audit-log för tenant-byte
  • Filtrera data baserat på användarens tenant

Fil: handlers/tenant.go


🟢 LÅG PRIORITET - Förbättringar (Vecka 5+)

15. Support / CSAT

Problem: CSAT-beräkning är inte implementerad.

Fil: handlers/support.go rad ~221

16. Receipts OCR

Problem: "TODO: Trigger async OCR processing"

Fil: handlers/receipts.go rad ~92

17. Profile Page

Problem: "TODO: API call to save profile"

Fil: web-v2/src/pages/ProfilePage.tsx rad ~82

18. Frontend Build Warning

Problem: Duplicate case clause i CompliancePage.tsx

Fil: web-v2/src/pages/CompliancePage.tsx


📋 Sammanfattning

Kategori Antal issues Status
Kritiskt (säkerhet) 4 🔴 Ej påbörjat
Hög prio (mock/demo) 5 🟡 Identifierat
Medel prio (integrationer) 5 🟠 Identifierat
Låg prio (förbättringar) 4 🟢 Identifierat
Totalt 18 0% klart

🚀 Nästa steg

  1. Börja med säkerheten - Auth, CORS, rate limiting, HTTPS
  2. Sedan ledger - Bokföring måste fungera för Landvex AB
  3. Sedan mail - IMAP-integration för riktig kommunikation
  4. Sedan quiXzoom - Koppla mot riktigt auth-system
  5. Till sist - BankID, Stripe, Visma, Fortnox

Viktigt: Ingenting ska vara demo eller hårdkodat. Varje endpoint måste antingen:

  1. Anropa riktig databas/integration, ELLER
  2. Returnera tydligt felmeddelande om integration inte är konfigurerad

Inga fejkade data. Inga exempel-email. Inga mock-tokens.