- 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
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/tokenendpoint 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.Throttleeller 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.gohelt - Ersätt mock-fallback i
handlers/ledger.gomed 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.cometc med riktiga DB-anrop - Ersätt
https://example.com/img1.jpgmed 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-12345med 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
- Börja med säkerheten - Auth, CORS, rate limiting, HTTPS
- Sedan ledger - Bokföring måste fungera för Landvex AB
- Sedan mail - IMAP-integration för riktig kommunikation
- Sedan quiXzoom - Koppla mot riktigt auth-system
- Till sist - BankID, Stripe, Visma, Fortnox
Viktigt: Ingenting ska vara demo eller hårdkodat. Varje endpoint måste antingen:
- Anropa riktig databas/integration, ELLER
- Returnera tydligt felmeddelande om integration inte är konfigurerad
Inga fejkade data. Inga exempel-email. Inga mock-tokens.