Initial commit with inital CMS

This commit is contained in:
2026-06-15 17:00:16 +02:00
commit 95d986790e
132 changed files with 7624 additions and 0 deletions
@@ -0,0 +1,43 @@
# Services — SlpModularCms.Api
Dit document beschrijft de service-laag en de orkestratie van componenten.
## 1. Module Orchestrator (Binnen API Shell)
Verantwoordelijk voor het ontdekken en laden van modules bij het opstarten.
- **Proces**:
1. Identificeer statisch gerefereerde projecten die `IModule` implementeren.
2. Scan de geconfigureerde "Modules" directory voor DLL's (dynamisch laden).
3. Roep `RegisterServices` aan op alle gevonden module-instanties.
4. Voeg de controllers van de modules toe aan de MVC-pipeline via `AddApplicationPart`.
## 2. Identity Service Orchestratie
De `IAuthService` maakt gebruik van ASP.NET Core Identity onder water om authenticatie te regelen.
- **Workflow Login**:
- `AuthService` roept `UserManager` aan voor validatie.
- Bij succes genereert `TokenService` een JWT met claims (ID, Rol).
- Refresh token wordt opgeslagen in de database.
## 3. Availability Check Flow
Cross-cutting concern dat door de hele applicatie heen loopt.
- **Interceptors/Middleware**:
- Elk inkomend request kan worden gecontroleerd tegen de `IAvailabilityService`.
- Als `IAvailabilityService.IsAvailableAsync()` false retourneert, stopt de pipeline met een `503 Service Unavailable`.
## 4. RBAC Policy Orchestratie
Het framework configureert globale policies op basis van de rollenhiërarchie.
- **Policies**:
- `RequireOwnerRole`: Vereist expliciet de Owner claim.
- `RequireAdminRole`: Vereist Admin OF Owner claim.
- `RequireUserRole`: Vereist User, Admin OF Owner claim.
## 5. Module-Specifieke Autorisatie
Naast de globale rollen kunnen Beheerders en Eigenaars rechten per module toekennen aan Gebruikers.
- **Mechanisme**:
- Het systeem houdt een koppeling bij tussen `User` en `Module` met bijbehorende permissies (bijv. `HasAccess`).
- **Custom Requirement**: Er wordt een `ModuleAccessRequirement` gedefinieerd die controleert of de huidige gebruiker expliciete toegang heeft tot de module die hij probeert te benaderen.
- **Override**: Eigenaars en Beheerders hebben standaard toegang tot alle modules (hiërarchie bypass).