Changes backend in preparation for frontend work

This commit is contained in:
2026-06-19 12:15:08 +02:00
parent b5357f213a
commit 23e2150140
22 changed files with 631 additions and 92 deletions
+12 -15
View File
@@ -44,23 +44,20 @@ De API is daarna bereikbaar op `https://localhost:7221` (of de geconfigureerde p
## Initiële Setup (Bootstrapping)
Wanneer de applicatie voor de eerste keer wordt gestart met een lege database, moet er een "Owner" (eigenaar) worden aangemaakt. Dit kan via de setup endpoints.
...
### 1. Status controleren
Controleer of het systeem al geïnitialiseerd is:
- **Endpoint**: `GET /api/v1/Setup/status`
- **Response**: `{ "initialized": true/false }`
## Authenticatie & Security (Unit 0)
### 2. Eerste Owner aanmaken
Dit endpoint is alleen bruikbaar als er nog geen Owner in de database staat.
- **Endpoint**: `POST /api/v1/Setup/owner`
- **Payload**:
```json
{
"email": "admin@example.com",
"password": "JeWachtwoord123!"
}
```
De API gebruikt een beveiligde flow voor authenticatie:
- **Login**: `POST /api/v1/auth/login`. Retourneert een `accessToken` in de body en een `refreshToken` in een beveiligde `httpOnly` cookie.
- **Refresh**: `POST /api/v1/auth/refresh`. Gebruikt de `refreshToken` cookie om een nieuwe `accessToken` en `refreshToken` (rotatie) te genereren.
- **Revoke**: `POST /api/v1/auth/revoke`. Trekt het token in en wist de cookie.
### Belangrijke NFR Details:
- **CORS**: Alleen toegestane origins uit `appsettings.json → Cors:AllowedOrigins` worden geaccepteerd. De frontend moet draaien op een van deze origins.
- **Cookies**: De `refreshToken` cookie is `httpOnly`, `SameSite=Strict` en heeft het pad `/api/v1/auth`.
- **Rate Limiting**: Login endpoints hebben rate limiting (Fixed window 5/min, Sliding window 20/min).
- **Error Handling**: Foutmeldingen volgen de RFC 9457 `ProblemDetails` standaard.
## Database Migraties