Initial commit with inital CMS
This commit is contained in:
@@ -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).
|
||||
Reference in New Issue
Block a user