78b57273e2
- 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
201 lines
5.9 KiB
Markdown
201 lines
5.9 KiB
Markdown
# 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.
|